代码优化

This commit is contained in:
ZCShou 2021-05-25 20:44:15 +08:00
parent 27a0e01f51
commit db4b08068b
7 changed files with 797 additions and 870 deletions

View File

@ -6,8 +6,8 @@ android {
applicationId "com.zcshou.gogogo"
minSdkVersion 27
targetSdkVersion 29
versionCode 130
versionName '1.3.0'
versionCode 131
versionName '1.3.1'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
ndkVersion '22.1.7171670'

Binary file not shown.

View File

@ -10,8 +10,8 @@
{
"type": "SINGLE",
"filters": [],
"versionCode": 130,
"versionName": "1.3.0",
"versionCode": 131,
"versionName": "1.3.1",
"outputFile": "app-release.apk"
}
]

View File

@ -7,9 +7,6 @@ import android.os.Vibrator;
import com.baidu.mapapi.SDKInitializer;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
@SuppressLint("Registered")
public class GoApplication extends Application {

View File

@ -1,455 +1,427 @@
package com.zcshou.joystick;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import com.zcshou.gogogo.R;
public class ButtonView extends LinearLayout {
private ButtonViewClickListener mListener;
boolean isCenter;
ImageButton btnCenter;
boolean isNorth;
ImageButton btnNorth;
boolean isSouth;
ImageButton btnSouth;
boolean isWest;
ImageButton btnWest;
boolean isEast;
ImageButton btnEast;
boolean isEastNorth;
ImageButton btnEastNorth;
boolean isEastSouth;
ImageButton btnEastSouth;
boolean isWestNorth;
ImageButton btnWestNorth;
boolean isWestSouth;
ImageButton btnWestSouth;
public ButtonView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
public ButtonView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
public ButtonView(Context context) {
super(context);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
private void initButtonView() {
isCenter = false;
btnCenter = findViewById(R.id.btn_center);
btnCenter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isCenter) {
isCenter = true;
btnCenter.setImageResource(R.drawable.ic_lock_close);
} else {
isCenter = false;
btnCenter.setImageResource(R.drawable.ic_lock_open);
if (isNorth) {
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
}
if (isSouth) {
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
}
if (isWest) {
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
}
if (isEast) {
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
}
if (isEastNorth) {
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
}
if (isEastSouth) {
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
}
if (isWestNorth) {
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
}
if (isWestSouth) {
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
}
if (mListener != null) {
mListener.clickAngleInfo(false,0, 0);
}
}
}
});
isNorth = false;
btnNorth = findViewById(R.id.btn_north);
btnNorth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isNorth) {
isNorth = true;
btnNorth.setImageResource(R.drawable.ic_up_pressed);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,90, 1);
}
} else {
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
if (mListener != null) {
mListener.clickAngleInfo(false,90, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,90, 1);
}
}
}
});
isSouth = false;
btnSouth = findViewById(R.id.btn_south);
btnSouth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isSouth) {
isSouth = true;
btnSouth.setImageResource(R.drawable.ic_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,270, 1);
}
} else {
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
if (mListener != null) {
mListener.clickAngleInfo(false,270, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,270, 1);
}
}
}
});
isWest = false;
btnWest = findViewById(R.id.btn_west);
btnWest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isWest) {
isWest = true;
btnWest.setImageResource(R.drawable.ic_left_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,180, 1);
}
} else {
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
if (mListener != null) {
mListener.clickAngleInfo(false,180, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,180, 1);
}
}
}
});
isEast = false;
btnEast = findViewById(R.id.btn_east);
btnEast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isEast) {
isEast = true;
btnEast.setImageResource(R.drawable.ic_right_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,0, 1);
}
} else {
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
if (mListener != null) {
mListener.clickAngleInfo(false,0, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,0, 1);
}
}
}
});
isEastNorth = false;
btnEastNorth = findViewById(R.id.btn_north_east);
btnEastNorth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isEastNorth) {
isEastNorth = true;
btnEastNorth.setImageResource(R.drawable.ic_right_up_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,45, 1);
}
} else {
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
if (mListener != null) {
mListener.clickAngleInfo(false,45, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,45, 1);
}
}
}
});
isEastSouth = false;
btnEastSouth = findViewById(R.id.btn_south_east);
btnEastSouth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isEastSouth) {
isEastSouth = true;
btnEastSouth.setImageResource(R.drawable.ic_right_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,315, 1);
}
} else {
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
if (mListener != null) {
mListener.clickAngleInfo(false,315, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,315, 1);
}
}
}
});
isWestNorth = false;
btnWestNorth = findViewById(R.id.btn_north_west);
btnWestNorth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isWestNorth) {
isWestNorth = true;
btnWestNorth.setImageResource(R.drawable.ic_left_up_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,135, 1);
}
} else {
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
if (mListener != null) {
mListener.clickAngleInfo(false,135, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,135, 1);
}
}
}
});
isWestSouth = false;
btnWestSouth = findViewById(R.id.btn_south_west);
btnWestSouth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCenter) {
if (!isWestSouth) {
isWestSouth = true;
btnWestSouth.setImageResource(R.drawable.ic_left_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
if (mListener != null) {
mListener.clickAngleInfo(true,225, 1);
}
} else {
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(false,225, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,225, 1);
}
}
}
});
}
public void setListener(ButtonViewClickListener mListener) {
this.mListener = mListener;
}
public interface ButtonViewClickListener {
/**
* 点击的角度信息
*/
void clickAngleInfo(Boolean auto, double angle, double r);
}
}
package com.zcshou.joystick;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import com.zcshou.gogogo.R;
public class ButtonView extends LinearLayout {
private ButtonViewClickListener mListener;
boolean isCenter;
ImageButton btnCenter;
boolean isNorth;
ImageButton btnNorth;
boolean isSouth;
ImageButton btnSouth;
boolean isWest;
ImageButton btnWest;
boolean isEast;
ImageButton btnEast;
boolean isEastNorth;
ImageButton btnEastNorth;
boolean isEastSouth;
ImageButton btnEastSouth;
boolean isWestNorth;
ImageButton btnWestNorth;
boolean isWestSouth;
ImageButton btnWestSouth;
public ButtonView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
public ButtonView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
public ButtonView(Context context) {
super(context);
LayoutInflater.from(context).inflate(R.layout.joystick_button, this);
initButtonView();
}
private void initButtonView() {
isCenter = false;
btnCenter = findViewById(R.id.btn_center);
btnCenter.setOnClickListener(view -> {
if (!isCenter) {
isCenter = true;
btnCenter.setImageResource(R.drawable.ic_lock_close);
} else {
isCenter = false;
btnCenter.setImageResource(R.drawable.ic_lock_open);
if (isNorth) {
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
}
if (isSouth) {
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
}
if (isWest) {
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
}
if (isEast) {
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
}
if (isEastNorth) {
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
}
if (isEastSouth) {
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
}
if (isWestNorth) {
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
}
if (isWestSouth) {
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
}
if (mListener != null) {
mListener.clickAngleInfo(false,0, 0);
}
}
});
isNorth = false;
btnNorth = findViewById(R.id.btn_north);
btnNorth.setOnClickListener(view -> {
if (isCenter) {
if (!isNorth) {
isNorth = true;
btnNorth.setImageResource(R.drawable.ic_up_pressed);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,90, 1);
}
} else {
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
if (mListener != null) {
mListener.clickAngleInfo(false,90, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,90, 1);
}
}
});
isSouth = false;
btnSouth = findViewById(R.id.btn_south);
btnSouth.setOnClickListener(view -> {
if (isCenter) {
if (!isSouth) {
isSouth = true;
btnSouth.setImageResource(R.drawable.ic_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,270, 1);
}
} else {
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
if (mListener != null) {
mListener.clickAngleInfo(false,270, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,270, 1);
}
}
});
isWest = false;
btnWest = findViewById(R.id.btn_west);
btnWest.setOnClickListener(view -> {
if (isCenter) {
if (!isWest) {
isWest = true;
btnWest.setImageResource(R.drawable.ic_left_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,180, 1);
}
} else {
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
if (mListener != null) {
mListener.clickAngleInfo(false,180, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,180, 1);
}
}
});
isEast = false;
btnEast = findViewById(R.id.btn_east);
btnEast.setOnClickListener(view -> {
if (isCenter) {
if (!isEast) {
isEast = true;
btnEast.setImageResource(R.drawable.ic_right_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,0, 1);
}
} else {
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
if (mListener != null) {
mListener.clickAngleInfo(false,0, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,0, 1);
}
}
});
isEastNorth = false;
btnEastNorth = findViewById(R.id.btn_north_east);
btnEastNorth.setOnClickListener(view -> {
if (isCenter) {
if (!isEastNorth) {
isEastNorth = true;
btnEastNorth.setImageResource(R.drawable.ic_right_up_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,45, 1);
}
} else {
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
if (mListener != null) {
mListener.clickAngleInfo(false,45, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,45, 1);
}
}
});
isEastSouth = false;
btnEastSouth = findViewById(R.id.btn_south_east);
btnEastSouth.setOnClickListener(view -> {
if (isCenter) {
if (!isEastSouth) {
isEastSouth = true;
btnEastSouth.setImageResource(R.drawable.ic_right_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,315, 1);
}
} else {
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
if (mListener != null) {
mListener.clickAngleInfo(false,315, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,315, 1);
}
}
});
isWestNorth = false;
btnWestNorth = findViewById(R.id.btn_north_west);
btnWestNorth.setOnClickListener(view -> {
if (isCenter) {
if (!isWestNorth) {
isWestNorth = true;
btnWestNorth.setImageResource(R.drawable.ic_left_up_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(true,135, 1);
}
} else {
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
if (mListener != null) {
mListener.clickAngleInfo(false,135, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,135, 1);
}
}
});
isWestSouth = false;
btnWestSouth = findViewById(R.id.btn_south_west);
btnWestSouth.setOnClickListener(view -> {
if (isCenter) {
if (!isWestSouth) {
isWestSouth = true;
btnWestSouth.setImageResource(R.drawable.ic_left_down_pressed);
isNorth = false;
btnNorth.setImageResource(R.drawable.ic_up);
isSouth = false;
btnSouth.setImageResource(R.drawable.ic_down);
isWest = false;
btnWest.setImageResource(R.drawable.ic_left);
isEast = false;
btnEast.setImageResource(R.drawable.ic_right);
isEastNorth = false;
btnEastNorth.setImageResource(R.drawable.ic_right_up);
isEastSouth = false;
btnEastSouth.setImageResource(R.drawable.ic_right_down);
isWestNorth = false;
btnWestNorth.setImageResource(R.drawable.ic_left_up);
if (mListener != null) {
mListener.clickAngleInfo(true,225, 1);
}
} else {
isWestSouth = false;
btnWestSouth.setImageResource(R.drawable.ic_left_down);
if (mListener != null) {
mListener.clickAngleInfo(false,225, 0);
}
}
} else {
if (mListener != null) {
mListener.clickAngleInfo(false,225, 1);
}
}
});
}
public void setListener(ButtonViewClickListener mListener) {
this.mListener = mListener;
}
public interface ButtonViewClickListener {
/**
* 点击的角度信息
*/
void clickAngleInfo(Boolean auto, double angle, double r);
}
}

View File

@ -1,383 +1,354 @@
package com.zcshou.joystick;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.CountDownTimer;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import androidx.preference.PreferenceManager;
import com.zcshou.gogogo.R;
public class JoyStick extends View {
private Context mContext;
private WindowManager.LayoutParams mWindowParams;
private WindowManager mWindowManager;
private final LayoutInflater inflater;
private View mJoystickView;
private LinearLayout mLatLngView;
private JoyStickClickListener mListener;
// 控制按键相关
ImageButton btnInput;
boolean isWalk;
ImageButton btnWalk;
boolean isRun;
ImageButton btnRun;
boolean isBike;
ImageButton btnBike;
// 移动
private TimeCount time;
double mAngle;
double mSpeed;
SharedPreferences sharedPreferences;
public JoyStick(Context context) {
super(context);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
// 这里记录启动次数
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
long num = sharedPreferences.getLong("setting_startup_num", 0);
sharedPreferences.edit()
.putLong("setting_startup_num", ++num)
.apply();
}
public JoyStick(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
}
public JoyStick(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
}
private void initWindowManager() {
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= 26) {//8.0新特性
mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
mWindowParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
Log.d("FLOAT", "initFloatWindow finish");
}
@SuppressLint("InflateParams")
private void initJoyStickView() {
time = new TimeCount(1000, 1000);
String sSpeed = sharedPreferences.getString("setting_walk", "");
if (sSpeed == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_walk_default));
} else {
mSpeed = Double.parseDouble(sSpeed);
}
mJoystickView = inflater.inflate(R.layout.joystick, null);
mJoystickView.setOnTouchListener(new JoyStickOnTouchListener());
btnInput = mJoystickView.findViewById(R.id.joystick_input);
btnInput.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mJoystickView != null) {
mWindowManager.removeView(mJoystickView);
}
if (mLatLngView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.MATCH_PARENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mLatLngView, mWindowParams);
}
}
});
isWalk = true;
btnWalk = mJoystickView.findViewById(R.id.joystick_walk);
btnWalk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!isWalk) {
btnWalk.setImageResource(R.drawable.ic_walk_pressed);
isWalk = true;
btnRun.setImageResource(R.drawable.ic_run);
isRun = false;
btnBike.setImageResource(R.drawable.ic_bike);
isBike = false;
String sSpeed = sharedPreferences.getString("setting_walk", "");
if (sSpeed == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_walk_default));
} else {
mSpeed = Double.parseDouble(sSpeed);
}
mListener.setCurrentSpeed(mSpeed);
}
}
});
isRun = false;
btnRun = mJoystickView.findViewById(R.id.joystick_run);
btnRun.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!isRun) {
btnRun.setImageResource(R.drawable.ic_run_pressed);
isRun = true;
btnWalk.setImageResource(R.drawable.ic_walk);
isWalk = false;
btnBike.setImageResource(R.drawable.ic_bike);
isBike = false;
String sSpeed = sharedPreferences.getString("setting_run", "");
if (sSpeed == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_run_default));
} else {
mSpeed = Double.parseDouble(sSpeed);
}
mListener.setCurrentSpeed(mSpeed);
}
}
});
isBike = false;
btnBike = mJoystickView.findViewById(R.id.joystick_bike);
btnBike.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!isBike) {
btnBike.setImageResource(R.drawable.ic_bike_pressed);
isBike = true;
btnWalk.setImageResource(R.drawable.ic_walk);
isWalk = false;
btnRun.setImageResource(R.drawable.ic_run);
isRun = false;
String sSpeed = sharedPreferences.getString("setting_bike", "");
if (sSpeed == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_bike_default));
} else {
mSpeed = Double.parseDouble(sSpeed);
}
mListener.setCurrentSpeed(mSpeed);
}
}
});
ButtonView btnView = mJoystickView.findViewById(R.id.joystick_view);
btnView.setListener(new ButtonView.ButtonViewClickListener() {
@Override
public void clickAngleInfo(Boolean auto, double angle, double r) {
if (r <= 0) {
time.cancel();
} else {
mAngle = angle;
mSpeed = mSpeed * r;
if (auto) {
time.start();
} else {
time.cancel();
mListener.clickAngleInfo(mAngle, mSpeed);
}
}
}
});
}
@SuppressLint({"InflateParams", "ClickableViewAccessibility"})
private void initJoyStickLatLngView() {
mLatLngView = (LinearLayout)inflater.inflate(R.layout.joystick_latlng, null);
mLatLngView.setOnTouchListener(new JoyStickOnTouchListener());
Button btnOk = mLatLngView.findViewById(R.id.joystick_latlng_ok);
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mJoystickView, mWindowParams);
}
}
});
Button btnCancel = mLatLngView.findViewById(R.id.joystick_latlng_cancel);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mJoystickView, mWindowParams);
}
}
});
}
public void show() {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowManager.addView(mJoystickView, mWindowParams);
}
}
public void hide() {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() != null) {
mWindowManager.removeView(mJoystickView);
}
}
public void setListener(JoyStickClickListener mListener) {
this.mListener = mListener;
}
private class JoyStickOnTouchListener implements OnTouchListener {
private int x;
private int y;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) event.getRawX();
y = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int nowX = (int) event.getRawX();
int nowY = (int) event.getRawY();
int movedX = nowX - x;
int movedY = nowY - y;
x = nowX;
y = nowY;
mWindowParams.x = mWindowParams.x + movedX;
mWindowParams.y = mWindowParams.y + movedY;
mWindowManager.updateViewLayout(view, mWindowParams);
break;
case MotionEvent.ACTION_UP:
view.performClick();
break;
default:
break;
}
return false;
}
}
public interface JoyStickClickListener {
void clickAngleInfo(double angle, double speed);
void setCurrentSpeed(double speed);
}
class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔
}
@Override
public void onFinish() {//计时完毕时触发
mListener.clickAngleInfo(mAngle, mSpeed);
time.start();
}
@Override
public void onTick(long millisUntilFinished) { //计时过程显示
}
}
package com.zcshou.joystick;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.PixelFormat;
import android.os.CountDownTimer;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import androidx.preference.PreferenceManager;
import com.zcshou.gogogo.R;
public class JoyStick extends View {
final private Context mContext;
private WindowManager.LayoutParams mWindowParams;
private WindowManager mWindowManager;
private final LayoutInflater inflater;
private View mJoystickView;
private LinearLayout mLatLngView;
private JoyStickClickListener mListener;
// 控制按键相关
ImageButton btnInput;
boolean isWalk;
ImageButton btnWalk;
boolean isRun;
ImageButton btnRun;
boolean isBike;
ImageButton btnBike;
// 移动
private TimeCount time;
double mAngle;
double mSpeed;
SharedPreferences sharedPreferences;
public JoyStick(Context context) {
super(context);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
// 这里记录启动次数
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
long num = sharedPreferences.getLong("setting_startup_num", 0);
sharedPreferences.edit()
.putLong("setting_startup_num", ++num)
.apply();
}
public JoyStick(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
}
public JoyStick(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
initWindowManager();
inflater = LayoutInflater.from(mContext);
if (inflater != null) {
initJoyStickView();
initJoyStickLatLngView();
}
}
private void initWindowManager() {
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowParams = new WindowManager.LayoutParams();
mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
Log.d("FLOAT", "initFloatWindow finish");
}
@SuppressLint("InflateParams")
private void initJoyStickView() {
time = new TimeCount(1000, 1000);
String sSpeed = sharedPreferences.getString("setting_walk", "");
if (sSpeed == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_walk_default));
} else {
mSpeed = Double.parseDouble(sSpeed);
}
mJoystickView = inflater.inflate(R.layout.joystick, null);
mJoystickView.setOnTouchListener(new JoyStickOnTouchListener());
btnInput = mJoystickView.findViewById(R.id.joystick_input);
btnInput.setOnClickListener(v -> {
if (mJoystickView != null) {
mWindowManager.removeView(mJoystickView);
}
if (mLatLngView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.MATCH_PARENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mLatLngView, mWindowParams);
}
});
isWalk = true;
btnWalk = mJoystickView.findViewById(R.id.joystick_walk);
btnWalk.setOnClickListener(v -> {
if (!isWalk) {
btnWalk.setImageResource(R.drawable.ic_walk_pressed);
isWalk = true;
btnRun.setImageResource(R.drawable.ic_run);
isRun = false;
btnBike.setImageResource(R.drawable.ic_bike);
isBike = false;
String sSpeed1 = sharedPreferences.getString("setting_walk", "");
if (sSpeed1 == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_walk_default));
} else {
mSpeed = Double.parseDouble(sSpeed1);
}
mListener.setCurrentSpeed(mSpeed);
}
});
isRun = false;
btnRun = mJoystickView.findViewById(R.id.joystick_run);
btnRun.setOnClickListener(v -> {
if (!isRun) {
btnRun.setImageResource(R.drawable.ic_run_pressed);
isRun = true;
btnWalk.setImageResource(R.drawable.ic_walk);
isWalk = false;
btnBike.setImageResource(R.drawable.ic_bike);
isBike = false;
String sSpeed12 = sharedPreferences.getString("setting_run", "");
if (sSpeed12 == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_run_default));
} else {
mSpeed = Double.parseDouble(sSpeed12);
}
mListener.setCurrentSpeed(mSpeed);
}
});
isBike = false;
btnBike = mJoystickView.findViewById(R.id.joystick_bike);
btnBike.setOnClickListener(v -> {
if (!isBike) {
btnBike.setImageResource(R.drawable.ic_bike_pressed);
isBike = true;
btnWalk.setImageResource(R.drawable.ic_walk);
isWalk = false;
btnRun.setImageResource(R.drawable.ic_run);
isRun = false;
String sSpeed13 = sharedPreferences.getString("setting_bike", "");
if (sSpeed13 == null) {
mSpeed = Double.parseDouble(getResources().getString(R.string.setting_bike_default));
} else {
mSpeed = Double.parseDouble(sSpeed13);
}
mListener.setCurrentSpeed(mSpeed);
}
});
ButtonView btnView = mJoystickView.findViewById(R.id.joystick_view);
btnView.setListener((auto, angle, r) -> {
if (r <= 0) {
time.cancel();
} else {
mAngle = angle;
mSpeed = mSpeed * r;
if (auto) {
time.start();
} else {
time.cancel();
mListener.clickAngleInfo(mAngle, mSpeed);
}
}
});
}
@SuppressLint({"InflateParams", "ClickableViewAccessibility"})
private void initJoyStickLatLngView() {
mLatLngView = (LinearLayout)inflater.inflate(R.layout.joystick_latlng, null);
mLatLngView.setOnTouchListener(new JoyStickOnTouchListener());
Button btnOk = mLatLngView.findViewById(R.id.joystick_latlng_ok);
btnOk.setOnClickListener(v -> {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mJoystickView, mWindowParams);
}
});
Button btnCancel = mLatLngView.findViewById(R.id.joystick_latlng_cancel);
btnCancel.setOnClickListener(v -> {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowParams.format = PixelFormat.RGBA_8888;
mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowParams.gravity = Gravity.START | Gravity.TOP;
mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mWindowParams.x = 300;
mWindowParams.y = 300;
mWindowManager.addView(mJoystickView, mWindowParams);
}
});
}
public void show() {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() == null) {
mWindowManager.addView(mJoystickView, mWindowParams);
}
}
public void hide() {
if (mLatLngView.getParent() != null) {
mWindowManager.removeView(mLatLngView);
}
if (mJoystickView.getParent() != null) {
mWindowManager.removeView(mJoystickView);
}
}
public void setListener(JoyStickClickListener mListener) {
this.mListener = mListener;
}
private class JoyStickOnTouchListener implements OnTouchListener {
private int x;
private int y;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) event.getRawX();
y = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int nowX = (int) event.getRawX();
int nowY = (int) event.getRawY();
int movedX = nowX - x;
int movedY = nowY - y;
x = nowX;
y = nowY;
mWindowParams.x = mWindowParams.x + movedX;
mWindowParams.y = mWindowParams.y + movedY;
mWindowManager.updateViewLayout(view, mWindowParams);
break;
case MotionEvent.ACTION_UP:
view.performClick();
break;
default:
break;
}
return false;
}
}
public interface JoyStickClickListener {
void clickAngleInfo(double angle, double speed);
void setCurrentSpeed(double speed);
}
class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔
}
@Override
public void onFinish() {//计时完毕时触发
mListener.clickAngleInfo(mAngle, mSpeed);
time.start();
}
@Override
public void onTick(long millisUntilFinished) { //计时过程显示
}
}
}

View File

@ -133,35 +133,22 @@ public class GoService extends Service {
Intent hideIntent = new Intent("HideJoyStick");
PendingIntent hidePendingPI = PendingIntent.getBroadcast(this, 0, hideIntent, PendingIntent.FLAG_CANCEL_CURRENT );
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel mChannel = new NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_LOW);
Log.i("GoService", mChannel.toString());
NotificationChannel mChannel = new NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_LOW);
Log.i("GoService", mChannel.toString());
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
}
notification = new NotificationCompat.Builder(this, channelId)
.setChannelId(channelId)
.setContentTitle(getResources().getString(R.string.app_name))
.setContentText(getResources().getString(R.string.app_service))
.setContentIntent(clickPI)
.addAction(new NotificationCompat.Action(null, "显示摇杆", showPendingPI))
.addAction(new NotificationCompat.Action(null, "隐藏摇杆", hidePendingPI))
.setSmallIcon(R.mipmap.ic_launcher).build();
} else {
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "M_CH_ID")
.setContentTitle(getResources().getString(R.string.app_name))
.setContentText(getResources().getString(R.string.app_service))
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(clickPI)
.addAction(new NotificationCompat.Action(null, "显示摇杆", showPendingPI))
.addAction(new NotificationCompat.Action(null, "隐藏摇杆", hidePendingPI))
.setOngoing(true)
.setChannelId(channelId);//无效
notification = notificationBuilder.build();
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
}
notification = new NotificationCompat.Builder(this, channelId)
.setChannelId(channelId)
.setContentTitle(getResources().getString(R.string.app_name))
.setContentText(getResources().getString(R.string.app_service))
.setContentIntent(clickPI)
.addAction(new NotificationCompat.Action(null, "显示摇杆", showPendingPI))
.addAction(new NotificationCompat.Action(null, "隐藏摇杆", hidePendingPI))
.setSmallIcon(R.mipmap.ic_launcher).build();
startForeground(1, notification);
curLatLng = intent.getStringExtra("CurLatLng");