Pārlūkot izejas kodu

兼容亿莱顿13.3寸Android 11设备

weizhengliang 2 gadi atpakaļ
vecāks
revīzija
addd8a4bc4

BIN
android_bed/src/main/assets/wd_update_plugin.apk


+ 3 - 0
android_bed/src/main/h10_w_yld/AndroidManifest.xml

@@ -12,6 +12,9 @@
     <uses-permission android:name="android.permission.STATUS_BAR" />
 
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
+    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
 
     <application
         android:hardwareAccelerated="false"

+ 27 - 6
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -6,12 +6,16 @@ import android.content.*
 import android.content.pm.PackageManager
 import android.media.AudioManager
 import android.net.ConnectivityManager
+import android.net.Uri
 import android.os.*
+import android.provider.Settings
 import android.support.v4.app.Fragment
 import android.support.v7.widget.LinearLayoutManager
 import android.text.TextUtils
+import android.util.DisplayMetrics
 import android.util.Log
 import android.view.View
+import android.view.WindowManager
 import android.widget.SeekBar
 import com.alibaba.fastjson.JSON
 import com.alibaba.fastjson.JSONObject
@@ -179,6 +183,24 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, Callingbed2M
             Constant.LOCAL_MAC = NetHelper.getInstance().imei
         }
 
+        if (!Settings.canDrawOverlays(this)) {
+            val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:$packageName"))
+            startActivityForResult(intent, 10)
+        }
+
+        if (!Settings.System.canWrite(this)) {
+            val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
+            intent.data = Uri.parse("package:" + this.packageName)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            startActivityForResult(intent, 11)
+        }
+
+        val wmanager: WindowManager = activity.windowManager
+        val dm = DisplayMetrics()
+        wmanager.getDefaultDisplay().getMetrics(dm)
+        Log.i(TAG, "screen size: width==${dm.widthPixels}, height==${dm.heightPixels}")
+        Constant.LCD_WIDTH = dm.widthPixels
+
         //presenter.loadTcpServerHost()
 
         //注册广播
@@ -215,7 +237,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, Callingbed2M
         Utils.setStatusBarDisable(activity, Utils.STATUS_BAR_DISABLE_EXPAND)
 
         //保持屏幕常亮
-        AppTool.Setting.setScreenOffTimeOut(applicationContext, 2147483647)
+        AppTool.Setting.setScreenOffTimeOut2(applicationContext, 2147483647)
 
         checkServer()
 
@@ -228,15 +250,14 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, Callingbed2M
 
     private fun startYunpaiPlugin() {
         try {
-            val packageInfos = packageManager.getInstalledPackages(
-                PackageManager.GET_ACTIVITIES or
-                        PackageManager.GET_SERVICES
-            )
+            val packageInfos = packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES or PackageManager.GET_SERVICES)
             var needInstall = false
             for (info in packageInfos) {
                 val pkg = info.packageName
-                if (pkg.equals("com.wd.app")) {
+                val newVer = "1.3"
+                if (pkg.equals("com.wd.app") && newVer == info.versionName) {
                     //启动云派app升级监听服务
+                    Log.d(TAG, "start app update plugin...")
                     val intent = Intent()
                     intent.setClassName("com.wd.app", "com.wd.app.MyService")
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

+ 1 - 1
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/AppUpdateHelper.java

@@ -238,7 +238,7 @@ public class AppUpdateHelper {
     public static void restartApp(Context context) {
         //重新启动app
         Intent mStartActivity = new Intent(context.getApplicationContext(), WelcomeActivity.class);
-        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
         int mPendingIntentId = 123456;
         PendingIntent mPendingIntent = PendingIntent.getActivity(context.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
         AlarmManager mgr = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);

+ 8 - 2
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/LanguageSetDialogHelper.java

@@ -19,6 +19,7 @@ import android.widget.Toast;
 
 import com.wdkl.app.ncs.callingbed.R;
 import com.wdkl.app.ncs.callingbed.settings.SettingConfig;
+import com.wdkl.ncs.android.middleware.common.Constant;
 
 
 public class LanguageSetDialogHelper {
@@ -129,8 +130,13 @@ public class LanguageSetDialogHelper {
         try {
             Window window = dialog.getWindow();
             WindowManager.LayoutParams lp = window.getAttributes();
-            lp.width = 400;
-            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            if (Constant.LCD_WIDTH == 1920) {
+                lp.width = 640;
+                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            } else {
+                lp.width = 400;
+                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            }
             lp.gravity = Gravity.CENTER;
             window.setAttributes(lp);
         } catch (Exception e) {

+ 1 - 1
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/NetHelper.java

@@ -502,7 +502,7 @@ public class NetHelper {
 
             }
         } catch (Exception e) {
-
+            e.printStackTrace();
         }
         return serial;
     }

+ 8 - 2
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/ServerConfigDialogHelper.java

@@ -20,6 +20,7 @@ import com.wdkl.app.ncs.callingbed.R;
 import com.wdkl.app.ncs.callingbed.adapter.NumAdapter;
 import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.lib.utils.ExtendMethodsKt;
+import com.wdkl.ncs.android.middleware.common.Constant;
 import com.wdkl.ncs.android.middleware.utils.CommonUtils;
 
 
@@ -133,8 +134,13 @@ public class ServerConfigDialogHelper {
             Window window = callDialog.getWindow();
             window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
             WindowManager.LayoutParams lp = window.getAttributes();
-            lp.width = 400;
-            lp.height = 480;
+            if (Constant.LCD_WIDTH == 1920) {
+                lp.width = 800;
+                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            } else {
+                lp.width = 400;
+                lp.height = 480;
+            }
             lp.gravity = Gravity.CENTER;
             window.setAttributes(lp);
 

+ 7 - 2
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/UpdateTipsDialogHelper.java

@@ -90,8 +90,13 @@ public class UpdateTipsDialogHelper {
         try {
             Window window = dialog.getWindow();
             WindowManager.LayoutParams lp = window.getAttributes();
-            lp.width = 640;
-            lp.height = 420;
+            if (Constant.LCD_WIDTH == 1920) {
+                lp.width = 840;
+                lp.height = 520;
+            } else {
+                lp.width = 640;
+                lp.height = 420;
+            }
             lp.gravity = Gravity.CENTER;
             window.setAttributes(lp);
         } catch (Exception e) {

+ 8 - 2
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/WarningDialogHelper.java

@@ -10,6 +10,7 @@ import android.view.WindowManager;
 import android.widget.Button;
 
 import com.wdkl.app.ncs.callingbed.R;
+import com.wdkl.ncs.android.middleware.common.Constant;
 
 public class WarningDialogHelper {
     private static AlertDialog dialog;
@@ -39,8 +40,13 @@ public class WarningDialogHelper {
         try {
             Window window = dialog.getWindow();
             WindowManager.LayoutParams lp = window.getAttributes();
-            lp.width = 600;
-            lp.height = 240;
+            if (Constant.LCD_WIDTH == 1920) {
+                lp.width = 800;
+                lp.height = 440;
+            } else {
+                lp.width = 600;
+                lp.height = 240;
+            }
             lp.gravity = Gravity.CENTER;
             window.setAttributes(lp);
         } catch (Exception e) {

+ 4 - 17
android_bed/src/main/h10_w_yld/java/com/wdkl/app/ncs/callingbed/helper/XCrashUtils.java

@@ -66,7 +66,7 @@ public class XCrashUtils {
             if (!BuildConfig.DEBUG) {
                 uploadCrashLog(logPath);
             } else {
-                restartApp();
+                AppUpdateHelper.restartApp(app);
             }
         }
     };
@@ -138,7 +138,7 @@ public class XCrashUtils {
                 @Override
                 public void onFail() {
                     Log.e(TAG,"错误日志文件上传失败!");
-                    restartApp();
+                    AppUpdateHelper.restartApp(app);
                 }
 
                 @Override
@@ -179,7 +179,7 @@ public class XCrashUtils {
                 @Override
                 public void onFailure(Call call, IOException e) {
                     Log.e(TAG,"错误日志名称上传失败"+e.getMessage());
-                    restartApp();
+                    AppUpdateHelper.restartApp(app);
                 }
 
                 @Override
@@ -188,7 +188,7 @@ public class XCrashUtils {
                     TombstoneManager.deleteTombstone(logPath);
                     //String data = response.body().string();
                     //Log.d(TAG,"错误日志数据 data "+data);
-                    restartApp();
+                    AppUpdateHelper.restartApp(app);
                 }
             });
         } catch (Exception e) {
@@ -226,17 +226,4 @@ public class XCrashUtils {
         }
     }
 
-    private void restartApp() {
-        //重新启动app
-        Intent mStartActivity = new Intent(app.getApplicationContext(), WelcomeActivity.class);
-        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-        int mPendingIntentId = 123456;
-        PendingIntent mPendingIntent = PendingIntent.getActivity(app.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
-        AlarmManager mgr = (AlarmManager) app.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
-        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, mPendingIntent);
-
-        android.os.Process.killProcess(android.os.Process.myPid());
-        System.exit(0);
-    }
-
 }

+ 1 - 1
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -181,7 +181,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, Callingbed2M
         Utils.setStatusBarDisable(activity, Utils.STATUS_BAR_DISABLE_EXPAND)
 
         //保持屏幕常亮
-        AppTool.Setting.setScreenOffTimeOut(applicationContext, 2147483647)
+        AppTool.Setting.setScreenOffTimeOut2(applicationContext, 2147483647)
 
         checkServer()
 

+ 12 - 0
common/src/main/code/com/wdkl/ncs/android/lib/utils/AppTool.kt

@@ -331,6 +331,18 @@ object AppTool {
             }
         }
 
+        @JvmStatic
+        fun setScreenOffTimeOut2(context: Context, time: Int) {
+            try {
+                //2147483647 永不休眠时间
+                if (!"rk3128".equals(Build.MODEL)) {
+                    Settings.System.putInt(context.contentResolver, Settings.System.SCREEN_OFF_TIMEOUT, time)
+                }
+            } catch (e: java.lang.Exception) {
+                e.printStackTrace()
+            }
+        }
+
         /**
          * 获取屏幕状态
          */

+ 3 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -79,6 +79,9 @@ public class Constant {
     public static String SIP_ID = "";
     public static String TARGET_SIP = "";
 
+    //lcd width,height
+    public static Integer LCD_WIDTH = 0;
+
     //当前网络连接是否可用
     public static Boolean NET_AVAILABLE = false;