diff --git a/app/build.gradle b/app/build.gradle index 8373bdd..8f4d8ea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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' diff --git a/app/release/app-release.apk b/app/release/app-release.apk index f54be36..a62c256 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index c853213..208f47d 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -10,8 +10,8 @@ { "type": "SINGLE", "filters": [], - "versionCode": 130, - "versionName": "1.3.0", + "versionCode": 131, + "versionName": "1.3.1", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/java/com/zcshou/gogogo/GoApplication.java b/app/src/main/java/com/zcshou/gogogo/GoApplication.java index 7f8ca41..7faffb7 100644 --- a/app/src/main/java/com/zcshou/gogogo/GoApplication.java +++ b/app/src/main/java/com/zcshou/gogogo/GoApplication.java @@ -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 { diff --git a/app/src/main/java/com/zcshou/joystick/ButtonView.java b/app/src/main/java/com/zcshou/joystick/ButtonView.java index 1270709..0e7e192 100644 --- a/app/src/main/java/com/zcshou/joystick/ButtonView.java +++ b/app/src/main/java/com/zcshou/joystick/ButtonView.java @@ -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); + + } + +} diff --git a/app/src/main/java/com/zcshou/joystick/JoyStick.java b/app/src/main/java/com/zcshou/joystick/JoyStick.java index ce22d16..4ac5238 100644 --- a/app/src/main/java/com/zcshou/joystick/JoyStick.java +++ b/app/src/main/java/com/zcshou/joystick/JoyStick.java @@ -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) { //计时过程显示 + + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/zcshou/service/GoService.java b/app/src/main/java/com/zcshou/service/GoService.java index 2b2d3fd..df4da64 100644 --- a/app/src/main/java/com/zcshou/service/GoService.java +++ b/app/src/main/java/com/zcshou/service/GoService.java @@ -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");