Quellcode durchsuchen

1.去掉后台保活方案的1像素activity,解决红米手机锁屏解锁会杀进程问题
2.解决红米手机获取不到imei问题
3.解决红米手机在通话界面使用手势返回桌面没显示悬浮窗问题
4.sim卡网络信号解析异常,去掉信号格显示

weizhengliang vor 2 Jahren
Ursprung
Commit
ee3579c3de

+ 3 - 2
app/src/main/AndroidManifest.xml

@@ -39,7 +39,7 @@
         android:label="@string/wdkl_app_name"
         android:supportsRtl="true"
         tools:replace="android:label"
-        tools:remove="android:requestLegacyExternalStorage"
+        android:requestLegacyExternalStorage="true"
         android:name="com.wdkl.app.ncs.application.NcsApplication"
         android:theme="@style/MyAppTheme">
 
@@ -57,7 +57,8 @@
             android:showOnLockScreen="true"
             android:showWhenLocked="true"
             android:launchMode="singleInstance"
-            android:screenOrientation="portrait">
+            android:screenOrientation="portrait"
+            android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
 

+ 5 - 3
home/src/main/AndroidManifest.xml

@@ -44,14 +44,16 @@
         <activity android:name=".activity.VoiceMsgActivity" android:screenOrientation="portrait"/>
         <activity android:name=".activity.ChannelImActivity" android:screenOrientation="portrait"/>
         <activity android:name=".activity.ContactUpdateActivity" android:screenOrientation="portrait"/>
-        <activity android:screenOrientation="portrait" android:name=".activity.SmsReceivedActivity" />
+        <activity android:name=".activity.SmsReceivedActivity" android:screenOrientation="portrait"/>
 
         <activity
             android:name=".ui.CallSingleActivity"
             android:showOnLockScreen="true"
             android:showWhenLocked="true"
-            android:launchMode="singleInstance"
-            android:excludeFromRecents="true">
+            android:excludeFromRecents="true"
+            android:screenOrientation="portrait"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:launchMode="singleInstance">
             <intent-filter>
                 <action android:name="${applicationId}.kit.voip.single" />
                 <category android:name="android.intent.category.DEFAULT" />

+ 47 - 32
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -87,6 +87,8 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
 
     private val REQUEST_MANAGER_PERMISSION = 11
 
+    private var tcpInit = false
+
     override fun onCreate(savedInstanceState: Bundle?) {
         if (!isTaskRoot) {
             finish()
@@ -134,49 +136,50 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
 -100 to -109 dBm, then it's generally considered poor signal (1 to 2 bars).
 -110 to -120 dBm, then it's generally considered very poor signal (0 to 1 bar)
          */
-        /*if (netType == NetHelper.NETWORK_4G) {
+        //if (netType == NetHelper.NETWORK_4G) {
             if (teleManager != null) {
                 teleManager.listen(object : PhoneStateListener() {
                     override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
-                        if (NetHelper.getInstance()
-                                .getNetworkState(applicationContext) == NetHelper.NETWORK_NONE
-                        ) {
-                            tv_signal_strength.text = "网络断开"
+                        if (NetHelper.getInstance().getNetworkState(applicationContext) == NetHelper.NETWORK_NONE) {
+                            tv_signal_strength.setText(R.string.network_disconnect)
                         } else {
-                            val signalinfo = signalStrength.toString()
-                            val parts = signalinfo.split(" ".toRegex()).toTypedArray()
-                            val ltedbm = parts[9].toInt()
-                            if (ltedbm >= -79) {
-                                tv_signal_strength.text = "网络极好"
-                            } else if (ltedbm >= -89 && ltedbm <= -80) {
-                                tv_signal_strength.text = "网络好"
-                            } else if (ltedbm >= -99 && ltedbm <= -90) {
-                                tv_signal_strength.text = "网络正常"
-                            } else if (ltedbm >= -109 && ltedbm <= -100) {
-                                tv_signal_strength.text = "网络较差"
-                            } else if (ltedbm >= -120 && ltedbm <= -110) {
-                                tv_signal_strength.text = "网络极差"
-                            }
+                            tv_signal_strength.setText(R.string.network_connect)
                         }
-                        //Log.i(TAG, "网络:LTE 信号强度:$ltedbm======Detail:$signalinfo")
 
                         super.onSignalStrengthsChanged(signalStrength)
                     }
                 }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
             }
-        }*/
+        //}
 
         requestPermissions()
 
         language = LocaleMangerUtils.getApplicationLocale().language
     }
 
+    private fun getDeviceId() {
+        Thread{
+            if ("Redmi".equals(Build.BRAND)) {
+                Constants.imei = DeviceIdUtils.execRootCmd("getprop ro.ril.miui.imei0")
+                Log.d(TAG, "redmi imei0: " + Constants.imei)
+            } else {
+                Constants.imei = Util.getIMEI(this)
+            }
+
+            runOnUiThread {
+                if (!TextUtils.isEmpty(Constants.imei)) {
+                    permissionGranted()
+                }
+            }
+        }.start()
+    }
+
     private fun permissionGranted() {
-        if ("Redmi".equals(Build.BRAND)) {
+        /*if ("Redmi".equals(Build.BRAND)) {
             Constants.imei = DeviceIdUtils.getDeviceId(activity)
         } else {
             Constants.imei = Util.getIMEI(this)
-        }
+        }*/
 
         Log.i(TAG, "IMEI " + Constants.imei)
         Log.i(TAG, "mac " + Constants.mac)
@@ -209,6 +212,13 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         }
 
         tv_server_ip.text = CommonUtils.getUrl(BaseApplication.appContext)
+
+        if (DaemonEnv.app == null && !WdKeepAliveService.instanceCreated) {
+            Log.d(TAG, "开始 WdKeepAliveService")
+            //保活守护进程
+            DaemonEnv.init(this)
+            DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
+        }
     }
 
 
@@ -311,12 +321,12 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             //JanusConstant.TURN_SERVER = data.turnServer
 
             //成功获取到数据后再启动keepService并连接tcp服务器
-            if (DaemonEnv.app == null && !Strings.isNullOrEmpty(Constants.tcpServer) && !WdKeepAliveService.instanceCreated) {
+            /*if (DaemonEnv.app == null && !Strings.isNullOrEmpty(Constants.tcpServer) && !WdKeepAliveService.instanceCreated) {
                 Log.d(TAG, "开始 WdKeepAliveService")
                 //保活守护进程
                 DaemonEnv.init(this)
                 DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
-            }
+            }*/
 
             presenter.getDeviceVO(Constants.imei)
         }
@@ -382,7 +392,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                         showMessage(R.string.permission_tips)
                         requestPermissions()
                     } else {
-                        permissionGranted()
+                        getDeviceId()
                     }
                 }.joinManager(disposableManager)
         } else {
@@ -412,7 +422,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                         showMessage(R.string.permission_tips)
                         requestPermissions()
                     } else {
-                        permissionGranted()
+                        getDeviceId()
                     }
                 }.joinManager(disposableManager)
         }
@@ -633,7 +643,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         })
 
         //等30秒
-        var waitSeconds = 0;
+        var waitSeconds = 0
         Thread {
             while (!NettyClient.instance.isConnect()) {
                 Log.w(TAG, "无网络" + waitSeconds)
@@ -682,15 +692,20 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         return false
     }
 
-    fun initTcp() {
+    private fun initTcp() {
         if (!Strings.isNullOrEmpty(Constants.tcpServer)) {    //有网且得到了服务器IP
             //presenter.getTcpServerHost()
             presenter.getServerInfo()
             return
         }
 
+        if (tcpInit) {
+            return
+        }
+        tcpInit = true
+
         var count = 30
-        Thread(Runnable {
+        Thread {
             while (isUnRegister && count > 0 && Strings.isNullOrEmpty(Constants.tcpServer)) {
                 //DaemonEnv.sendStopWorkBroadcast(this)
                 Log.i(TAG, "获取TCP服务器IP和端口")
@@ -698,7 +713,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 presenter.getServerInfo()
 
                 try {
-                    Thread.sleep(10000)
+                    Thread.sleep(15000)
                 } catch (e: Exception) {
                 }
                 count--
@@ -709,7 +724,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                     showMessage(R.string.net_disconnect)
                 })
             }
-        }).start()
+        }.start()
     }
 
     fun initCountDownTimer() {

+ 1 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/service/FloatingService.java

@@ -116,6 +116,7 @@ public class FloatingService extends Service {
 
         wmParams.gravity = Gravity.LEFT | Gravity.TOP;
         //wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+        wmParams.flags = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
         //设置悬浮窗口长宽数据
         wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
         wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;

+ 1 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -75,7 +75,7 @@ class WdKeepAliveService : AbsWorkService() {
     private lateinit var audioFocusManager: AudioFocusManager
 
     private var mIsRunning = false
-    private lateinit var netWorkChangeReceiver: NetWorkChangeReceiver
+    private var netWorkChangeReceiver: NetWorkChangeReceiver? = null
     lateinit var mVibrator: Vibrator
 
     private lateinit var receiver: PhoneStateReceiver

+ 5 - 5
home/src/main/code/com/wdkl/ncs/android/component/home/ui/CallSingleActivity.java

@@ -197,8 +197,8 @@ public class CallSingleActivity extends AppCompatActivity {
     }
 
     @Override
-    protected void onRestart() {
-        super.onRestart();
+    protected void onResume() {
+        super.onResume();
 
         //界面恢复,移除悬浮框
         if (mServiceBound) {
@@ -210,14 +210,14 @@ public class CallSingleActivity extends AppCompatActivity {
     @Override
     public void onBackPressed() {
         //通话时不能按返回键,跟微信同现象,只能挂断结束或者接听
-        super.onBackPressed();
+        /*super.onBackPressed();
         if (currentFragment != null) {
             if (currentFragment instanceof FragmentAudio) {
                 ((FragmentAudio) currentFragment).onBackPressed();
             } else if (currentFragment instanceof FragmentVideo) {
                 ((FragmentVideo) currentFragment).onBackPressed();
             }
-        }
+        }*/
     }
 
     public SingleCallFragment getCurrentFragment() {
@@ -403,7 +403,7 @@ public class CallSingleActivity extends AppCompatActivity {
     @Override
     public synchronized void finish(){
         Log.d(TAG, "call activity end");
-        if (janusClient.getWebSocketChannel()!=null) {
+        if (janusClient != null && janusClient.getWebSocketChannel()!=null) {
             janusClient.setCallState(EnumType.CallState.Idle);
             if (isOutgoing){
                 if (janusClient.getCurrentHandleId()!=null) {

+ 45 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/util/DeviceIdUtils.java

@@ -17,6 +17,8 @@ import android.util.Log;
 import com.wdkl.ncs.keepbackground.utils.RandomUtil;
 
 import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
 import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
@@ -209,4 +211,47 @@ public final class DeviceIdUtils {
             return null;
         }
     }
+
+    public static String execRootCmd(String cmd) {
+        String result = "";
+        DataOutputStream dos = null;
+        DataInputStream dis = null;
+        try {
+            Process p = Runtime.getRuntime().exec("su");// 经过Root处理的android系统即有su命令
+            dos = new DataOutputStream(p.getOutputStream());
+            dis = new DataInputStream(p.getInputStream());
+            Log.i(TAG, cmd);
+            dos.writeBytes(cmd + "\n");
+            dos.flush();
+            dos.writeBytes("exit\n");
+            dos.flush();
+            String line;
+            BufferedReader br = new BufferedReader(new InputStreamReader(dis));
+            while ((line = br.readLine()) != null) {
+                Log.d(TAG, "result:" + line);
+                result += line;
+            }
+            p.waitFor();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (dos != null) {
+                try {
+                    dos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            if (dis != null) {
+                try {
+                    dis.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        return result;
+    }
 }

+ 2 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/util/HomeWatcher.java

@@ -65,6 +65,7 @@ public class HomeWatcher {
         final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
         final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
         final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
+        final String SYSTEM_DIALOG_REASON_FS_GESTURE = "fs_gesture";  //小米手势
 
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -74,7 +75,7 @@ public class HomeWatcher {
                 if (reason != null) {
                     Log.i(TAG, "action:" + action + ",reason:" + reason);
                     if (mListener != null) {
-                        if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
+                        if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY) || reason.equals(SYSTEM_DIALOG_REASON_FS_GESTURE)) {
                             //home按键
                             mListener.onHomePressed();
                         } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {

+ 6 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/util/IMDialogHelper.java

@@ -17,6 +17,10 @@ public class IMDialogHelper {
     private static AlertDialog imDialog;
 
     public static void showIMDialog(Activity activity) {
+        if (imDialog != null && imDialog.isShowing()) {
+            return;
+        }
+
         View contentView = LayoutInflater.from(activity).inflate(R.layout.im_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
@@ -51,8 +55,9 @@ public class IMDialogHelper {
     }
 
     public static void dismissIMDialog() {
-        if (imDialog != null && imDialog.isShowing()) {
+        if (imDialog != null) {
             imDialog.dismiss();
+            imDialog = null;
         }
     }
 }

+ 6 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/util/ImPlayDialogHelper.java

@@ -21,6 +21,10 @@ public class ImPlayDialogHelper {
     private static AlertDialog imPlayDialog;
 
     public static void showImPlayDialog(Activity activity, String text, String time) {
+        if (imPlayDialog != null && imPlayDialog.isShowing()) {
+            return;
+        }
+
         View contentView = LayoutInflater.from(activity).inflate(R.layout.im_play_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
@@ -70,8 +74,9 @@ public class ImPlayDialogHelper {
     }
 
     public static void dismissIMDialog() {
-        if (imPlayDialog != null && imPlayDialog.isShowing()) {
+        if (imPlayDialog != null) {
             imPlayDialog.dismiss();
+            imPlayDialog = null;
         }
     }
 }

+ 6 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/util/PasswordDialogHelper.java

@@ -23,6 +23,10 @@ public class PasswordDialogHelper {
     private static String pwd = "";
 
     public static void showPasswordDialog(final Activity activity, final ClickListener listener) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
         View contentView = LayoutInflater.from(activity).inflate(R.layout.password_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
@@ -111,8 +115,9 @@ public class PasswordDialogHelper {
 
     public static void dismissCallDialog() {
         pwd = "";
-        if (dialog != null && dialog.isShowing()) {
+        if (dialog != null) {
             dialog.dismiss();
+            dialog = null;
         }
     }
 

+ 6 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/util/PhoneNumberDialogHelper.java

@@ -27,6 +27,10 @@ public class PhoneNumberDialogHelper {
     private static AlertDialog dialog;
 
     public static void showDialog(final Activity activity) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
         View contentView = LayoutInflater.from(activity).inflate(R.layout.phone_num_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
@@ -121,8 +125,9 @@ public class PhoneNumberDialogHelper {
     }
 
     public static void dismissCallDialog() {
-        if (dialog != null && dialog.isShowing()) {
+        if (dialog != null) {
             dialog.dismiss();
+            dialog = null;
         }
     }
 }

+ 13 - 8
home/src/main/code/com/wdkl/ncs/android/component/home/util/ServerConfigDialogHelper.java

@@ -25,10 +25,14 @@ import com.wdkl.ncs.android.middleware.utils.CommonUtils;
 
 public class ServerConfigDialogHelper {
 
-    private static AlertDialog callDialog;
+    private static AlertDialog dialog;
     private static String pwd = "";
 
     public static void showPasswordDialog(final Activity activity) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
         View contentView = LayoutInflater.from(activity).inflate(R.layout.server_config_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
@@ -123,14 +127,14 @@ public class ServerConfigDialogHelper {
         });
 
 
-        callDialog = builder.create();
-        //callDialog.setCanceledOnTouchOutside(false);
-        //callDialog.setCancelable(false);
-        callDialog.show();
+        dialog = builder.create();
+        //dialog.setCanceledOnTouchOutside(false);
+        //dialog.setCancelable(false);
+        dialog.show();
 
         //设置dialog宽高及位置
         try {
-            Window window = callDialog.getWindow();
+            Window window = dialog.getWindow();
             window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
             WindowManager.LayoutParams lp = window.getAttributes();
             lp.width = WindowManager.LayoutParams.MATCH_PARENT;
@@ -152,8 +156,9 @@ public class ServerConfigDialogHelper {
 
     public static void dismissCallDialog() {
         pwd = "";
-        if (callDialog != null && callDialog.isShowing()) {
-            callDialog.dismiss();
+        if (dialog != null) {
+            dialog.dismiss();
+            dialog = null;
         }
     }
 }

+ 2 - 2
keepalive/src/main/java/com/wdkl/ncs/keepbackground/singlepixel/ScreenReceiverUtil.java

@@ -40,7 +40,7 @@ public class ScreenReceiverUtil {
     public class SreenBroadcastReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
+            /*String action = intent.getAction();
             if (Intent.ACTION_SCREEN_ON.equals(action)) { // 开屏
             } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { // 锁屏
                 if (mScreenManager != null) {
@@ -52,7 +52,7 @@ public class ScreenReceiverUtil {
                     mScreenManager.finishActivity(); // 解锁
                 }
                 Log.d("sj_keep", "关闭了1像素Activity");
-            }
+            }*/
         }
     }
 }

+ 3 - 0
resource/src/main/res/values-es/strings.xml

@@ -229,4 +229,7 @@
     <string name="check_sms_command">SMS cmd:</string>
     <string name="str_send">Send</string>
     <string name="speech_sample_text">Este es un ejemplo de texto a voz</string>
+
+    <string name="network_connect">Connected</string>
+    <string name="network_disconnect">Disconnect</string>
 </resources>

+ 3 - 0
resource/src/main/res/values-ru/strings.xml

@@ -229,4 +229,7 @@
     <string name="check_sms_command">SMS cmd:</string>
     <string name="str_send">Send</string>
     <string name="speech_sample_text">Это пример преобразования текста в речь</string>
+
+    <string name="network_connect">Connected</string>
+    <string name="network_disconnect">Disconnect</string>
 </resources>

+ 3 - 0
resource/src/main/res/values-zh/strings.xml

@@ -229,4 +229,7 @@
     <string name="operator_number">运营商号码:</string>
     <string name="check_sms_command">短信指令:</string>
     <string name="str_send">发送</string>
+
+    <string name="network_connect">网络正常</string>
+    <string name="network_disconnect">网络断开</string>
 </resources>

+ 3 - 0
resource/src/main/res/values/strings.xml

@@ -229,4 +229,7 @@
     <string name="check_sms_command">SMS cmd:</string>
     <string name="str_send">Send</string>
     <string name="speech_sample_text">This is a text-to-speech sample</string>
+
+    <string name="network_connect">Connected</string>
+    <string name="network_disconnect">Disconnect</string>
 </resources>