From 2baf96fe67d4ac6cde2a5eaf5bd2822b61e5d5f7 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Jun 2025 13:03:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E5=92=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 13 +- .../com/xypower/mpapp/FloatingWindow.java | 270 ------------------ .../com/xypower/mpapp/MicroPhotoService.java | 17 +- .../xypower/mpapp/ScreenActionReceiver.java | 76 ----- 4 files changed, 3 insertions(+), 373 deletions(-) delete mode 100644 app/src/main/java/com/xypower/mpapp/FloatingWindow.java delete mode 100644 app/src/main/java/com/xypower/mpapp/ScreenActionReceiver.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2d86227e..0a55b15e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -174,8 +174,6 @@ - - @@ -193,16 +191,7 @@ - - - - - - - - + = Android 8.0 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationChannel channel = new NotificationChannel( - FOREGROUND_CHANNEL_ID, - "FloatingWindow", - NotificationManager.IMPORTANCE_LOW); - - NotificationManager manager = getSystemService(NotificationManager.class); - if (manager != null) { - manager.createNotificationChannel(channel); - } - } - } - - WindowManager.LayoutParams mWindowsParams; - private void moveView() { - /* - DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); - int width = (int) (metrics.widthPixels * 1f); - int height = (int) (metrics.heightPixels * 1f); - - mWindowsParams = new WindowManager.LayoutParams( - width,//WindowManager.LayoutParams.WRAP_CONTENT, - height,//WindowManager.LayoutParams.WRAP_CONTENT, - //WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, - - (Build.VERSION.SDK_INT <= 25) ? WindowManager.LayoutParams.TYPE_PHONE : WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY - , - - //WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, - WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL - | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN // Not displaying keyboard on bg activity's EditText - | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON - | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD - | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED - | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, - //WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, //Not work with EditText on keyboard - PixelFormat.TRANSLUCENT); - - - mWindowsParams.gravity = Gravity.TOP | Gravity.LEFT; - //params.x = 0; - mWindowsParams.y = 100; - mWindowManager.addView(mView, mWindowsParams); - - mView.setOnTouchListener(new View.OnTouchListener() { - private int initialX; - private int initialY; - private float initialTouchX; - private float initialTouchY; - - long startTime = System.currentTimeMillis(); - @Override - public boolean onTouch(View v, MotionEvent event) { - if (System.currentTimeMillis() - startTime <= 300) { - return false; - } - if (isViewInBounds(mView, (int) (event.getRawX()), (int) (event.getRawY()))) { - editTextReceiveFocus(); - } else { - editTextDontReceiveFocus(); - } - - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - initialX = mWindowsParams.x; - initialY = mWindowsParams.y; - initialTouchX = event.getRawX(); - initialTouchY = event.getRawY(); - break; - case MotionEvent.ACTION_UP: - break; - case MotionEvent.ACTION_MOVE: - mWindowsParams.x = initialX + (int) (event.getRawX() - initialTouchX); - mWindowsParams.y = initialY + (int) (event.getRawY() - initialTouchY); - mWindowManager.updateViewLayout(mView, mWindowsParams); - break; - } - return false; - } - }); - - */ - } - - private boolean isViewInBounds(View view, int x, int y) { - Rect outRect = new Rect(); - int[] location = new int[2]; - view.getDrawingRect(outRect); - view.getLocationOnScreen(location); - outRect.offset(location[0], location[1]); - return outRect.contains(x, y); - } - - private void editTextReceiveFocus() { - if (!wasInFocus) { - mWindowsParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; - mWindowManager.updateViewLayout(mView, mWindowsParams); - wasInFocus = true; - } - } - - private void editTextDontReceiveFocus() { - if (wasInFocus) { - mWindowsParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; - mWindowManager.updateViewLayout(mView, mWindowsParams); - wasInFocus = false; - hideKeyboard(mContext, edt1); - } - } - - private boolean wasInFocus = true; - private EditText edt1; - private void allAboutLayout(Intent intent) { - - LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mView = layoutInflater.inflate(R.layout.ovelay_window, null); - - edt1 = (EditText) mView.findViewById(R.id.edt1); - final TextView tvValue = (TextView) mView.findViewById(R.id.tvValue); - Button btnClose = (Button) mView.findViewById(R.id.btnClose); - - edt1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mWindowsParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; - // mWindowsParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE; - mWindowManager.updateViewLayout(mView, mWindowsParams); - wasInFocus = true; - showSoftKeyboard(v); - } - }); - - edt1.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - tvValue.setText(edt1.getText()); - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - btnClose.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - stopSelf(); - } - }); - - } - - - private void hideKeyboard(Context context, View view) { - if (view != null) { - InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(view.getWindowToken(), 0); - } - } - - public void showSoftKeyboard(View view) { - if (view.requestFocus()) { - InputMethodManager imm = (InputMethodManager) - getSystemService(Context.INPUT_METHOD_SERVICE); - imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); - } - } - -} diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index f94c49b4..dec47bba 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -170,7 +170,6 @@ public class MicroPhotoService extends Service { protected long mNativeHandle = 0; private AlarmReceiver mAlarmReceiver = null; private AlarmReceiver mLocalMsgReceiver = null; - private ScreenActionReceiver mScreenaAtionReceiver = null; private NetworkChangedReceiver mNetworkChangedReceiver = null; private long mGpsTimeout = 60000; // 1 minute @@ -270,6 +269,8 @@ public class MicroPhotoService extends Service { public void onCreate() { super.onCreate(); + Log.i(TAG, "MicroPhotoService::onCreate"); + Context context = getApplicationContext(); try { if (usingEthernet()) { @@ -320,8 +321,6 @@ public class MicroPhotoService extends Service { ex.printStackTrace(); } - mScreenaAtionReceiver = new ScreenActionReceiver(); - // 注册广播接受者 { mAlarmReceiver = new AlarmReceiver(this); @@ -395,7 +394,6 @@ public class MicroPhotoService extends Service { } getApplicationContext().unregisterReceiver(mAlarmReceiver); - getApplicationContext().unregisterReceiver(mScreenaAtionReceiver); getApplicationContext().unregisterReceiver(mNetworkChangedReceiver); getApplicationContext().unregisterReceiver(mHeartBeatReceiver); @@ -1064,7 +1062,6 @@ public class MicroPhotoService extends Service { connect(); - getApplicationContext().registerReceiver(mScreenaAtionReceiver, mScreenaAtionReceiver.getFilter()); if (intent.hasExtra("messenger")) { mMessenger = intent.getParcelableExtra("messenger"); } @@ -1119,11 +1116,6 @@ public class MicroPhotoService extends Service { break; case ACTION_STOP: - try { - getApplicationContext().unregisterReceiver(mScreenaAtionReceiver); - } catch (Exception ex) { - - } stopForeground(true); stopSelf(); break; @@ -1394,11 +1386,6 @@ public class MicroPhotoService extends Service { uninit(mNativeHandle); mNativeHandle = 0; - try { - getApplicationContext().unregisterReceiver(mScreenaAtionReceiver); - } catch (Exception ex) { - - } stopForeground(true); stopSelf(); } diff --git a/app/src/main/java/com/xypower/mpapp/ScreenActionReceiver.java b/app/src/main/java/com/xypower/mpapp/ScreenActionReceiver.java deleted file mode 100644 index e563744d..00000000 --- a/app/src/main/java/com/xypower/mpapp/ScreenActionReceiver.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.xypower.mpapp; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Build; -import android.util.Log; -import android.widget.Toast; - -public class ScreenActionReceiver extends BroadcastReceiver { - - private String TAG = "ScreenActionReceiver"; - - @Override - public void onReceive(Context context, Intent intent) { - - //LOG - StringBuilder sb = new StringBuilder(); - sb.append("Action: " + intent.getAction() + "\n"); - // sb.append("URI: " + intent.toUri(Intent.URI_INTENT_SCHEME).toString() + "\n"); - String log = sb.toString(); - Log.d(TAG, log); - Toast.makeText(context, log, Toast.LENGTH_SHORT).show(); - - String action = intent.getAction(); - try { - - if (Intent.ACTION_SCREEN_ON.equals(action)) { - Log.d(TAG, "screen is on..."); - Toast.makeText(context, "screen ON", Toast.LENGTH_SHORT); - - //Run the locker - - context.startService(new Intent(context, FloatingWindow.class)); - } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { - Log.d(TAG, "screen is off..."); - Toast.makeText(context, "screen OFF", Toast.LENGTH_SHORT); - - } else if (Intent.ACTION_USER_PRESENT.equals(action)) { - Log.d(TAG, "screen is unlock..."); - Toast.makeText(context, "screen UNLOCK", Toast.LENGTH_SHORT); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.startForegroundService(new Intent(context, FloatingWindow.class)); - } else { - context.startService(new Intent(context, FloatingWindow.class)); - } - - } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { - Log.d(TAG, "boot completed..."); - Toast.makeText(context, "BOOTED..", Toast.LENGTH_SHORT); - //Run the locker -/* Intent i = new Intent(context, FloatingWindow.class); - context.startService(i); - -*/ - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // context.startForegroundService(new Intent(context, FloatingWindow.class)); - } else { - // context.startService(new Intent(context, FloatingWindow.class)); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - public IntentFilter getFilter(){ - final IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_SCREEN_OFF); - filter.addAction(Intent.ACTION_SCREEN_ON); - return filter; - } - -} \ No newline at end of file