浏览代码

sim change

liuzhenxing 3 年之前
父节点
当前提交
876fb1dcf2

+ 28 - 30
app/src/main/java/com/xplora/xplauncher/activity/MainActivity.java

@@ -31,13 +31,12 @@ public class MainActivity extends BaseActivity {
     private int mCurrentPagerIndex = Constant.HOME_INDEX;
     private int mAppTitleStatus = 1;
     private int mDeleteBtnStatus = 0;
-    private int mWarningStatus = 0; //表盘界面,是否显示 warning 及状态, 0:不显示; >0 显示
+    private int mWarningStatus = 1; //表盘界面,是否显示 warning 及状态, 0:不显示; >0 显示
 
     private final List<View> mPagesDatas = new ArrayList<>();
     private final List<Object> mPagerViews = new ArrayList<>();
     private ViewPagerAdapter mViewPagerAdapter = null;
     private TimeBroadcastReceiver mTimeReceiver = null;
-    private SimStateReceiver mSimStateReceiver = null;
 
     private Button mWarningButton;
 
@@ -60,7 +59,8 @@ public class MainActivity extends BaseActivity {
 
         initViewPager();
         initWarning();
-        initBroadcast();
+        initTimeChangeBroadcast();
+        initSimStateBroadcast();
     }
 
     private void initViewPager() {
@@ -383,40 +383,42 @@ public class MainActivity extends BaseActivity {
     };
 
     // ======================== 广播 =======================
-    public void initBroadcast() {
-        //时间广播, 1分钟一次
+    private void initTimeChangeBroadcast() {
         if (mTimeReceiver == null) {
             mTimeReceiver = new TimeBroadcastReceiver(this);
-        }
-
-        //sim 卡状态变化
-        if (mSimStateReceiver == null) {
-            mSimStateReceiver = new SimStateReceiver(this);
+            mTimeReceiver.setOnTimeBroadcastListener(new TimeBroadcastReceiver.OnTimeBroadcastListener() {
+                @Override
+                public void onReceiveTimeChangeBroadcast() {
+                    HomePager homeView = (HomePager)mPagerViews.get(1);
+                    homeView.refreshTime();
+                }
+            });
         }
     }
 
-    public void onReceiveTimeBroadcast() {
-        HomePager homeView = (HomePager)mPagerViews.get(1);
-        homeView.refreshTime();
-    }
-
-    public void onReceiveSimStateBroadcast(int status) {
-        mWarningStatus = status;
-
-        if (status >= 1) {
-            int content = ResUtils.getStringId("sim_status_", status);
-            mWarningButton.setText(getString(content));
-            mWarningButton.setVisibility(View.VISIBLE);
-        } else {
-            mWarningButton.setVisibility(View.GONE);
-        }
+    private void initSimStateBroadcast() {
+        //sim 卡状态变化
+        SimStateReceiver simStateReceiver = new SimStateReceiver();
+        simStateReceiver.setOnSimStateListener(new SimStateReceiver.OnSimStateChangeListener() {
+            @Override
+            public void onReceiveSimStateChangeBroadcast(int status) {
+                mWarningStatus = status;
+                if (status >= 1) {
+                    int content = ResUtils.getStringId("sim_status_", status);
+                    mWarningButton.setText(getString(content));
+                    mWarningButton.setVisibility(View.VISIBLE);
+                } else {
+                    mWarningButton.setVisibility(View.GONE);
+                }
+            }
+        });
     }
 
     @Override
     protected void onResume() {
         super.onResume();
 
-        initBroadcast();
+        initTimeChangeBroadcast();
     }
 
     @Override
@@ -432,10 +434,6 @@ public class MainActivity extends BaseActivity {
             unregisterReceiver(mTimeReceiver);
             mTimeReceiver = null;
         }
-        if (mSimStateReceiver != null) {
-            unregisterReceiver(mSimStateReceiver);
-            mSimStateReceiver = null;
-        }
 
         HomePager homeView = (HomePager)mPagerViews.get(1);
         homeView.destroyView();

+ 18 - 10
app/src/main/java/com/xplora/xplauncher/broadcast/SimStateReceiver.java

@@ -4,17 +4,11 @@ import android.app.Service;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.telephony.TelephonyManager;
-import com.xplora.xplauncher.activity.MainActivity;
 
 public class SimStateReceiver extends BroadcastReceiver {
-    MainActivity mActivity;
     private final static String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
-
-    public SimStateReceiver(MainActivity activity) {
-        mActivity = activity;
-    }
+    private OnSimStateChangeListener mSimChangeListener;
 
     @Override
     public void onReceive(Context context, Intent intent) {
@@ -24,13 +18,19 @@ public class SimStateReceiver extends BroadcastReceiver {
 
             switch (state) {
                 case TelephonyManager.SIM_STATE_READY :
-                    mActivity.onReceiveSimStateBroadcast(0);
+                    if (mSimChangeListener != null) {
+                        mSimChangeListener.onReceiveSimStateChangeBroadcast(0);
+                    }
                     break;
                 case TelephonyManager.SIM_STATE_ABSENT :
-                    mActivity.onReceiveSimStateBroadcast(1);
+                    if (mSimChangeListener != null) {
+                        mSimChangeListener.onReceiveSimStateChangeBroadcast(1);
+                    }
                     break;
                 case TelephonyManager.SIM_STATE_NETWORK_LOCKED :
-                    mActivity.onReceiveSimStateBroadcast(4);
+                    if (mSimChangeListener != null) {
+                        mSimChangeListener.onReceiveSimStateChangeBroadcast(4);
+                    }
                     break;
                 case TelephonyManager.SIM_STATE_UNKNOWN :
                     break;
@@ -42,4 +42,12 @@ public class SimStateReceiver extends BroadcastReceiver {
             }
         }
     }
+
+    public void setOnSimStateListener(OnSimStateChangeListener mSimChangeListener) {
+        this.mSimChangeListener = mSimChangeListener;
+    }
+
+    public interface OnSimStateChangeListener {
+        void onReceiveSimStateChangeBroadcast(int status);
+    }
 }

+ 14 - 9
app/src/main/java/com/xplora/xplauncher/broadcast/TimeBroadcastReceiver.java

@@ -9,20 +9,15 @@ import android.content.IntentFilter;
 import com.xplora.xplauncher.activity.MainActivity;
 
 public class TimeBroadcastReceiver extends BroadcastReceiver {
-    MainActivity mActivity;
+    private OnTimeBroadcastListener mTimeChangeListener;
 
-    public TimeBroadcastReceiver(MainActivity activity) {
-        mActivity = activity;
-        initRegisterReceiver();
-    }
-
-    public void initRegisterReceiver() {
+    public TimeBroadcastReceiver(Context context) {
         // 更新时间的广播
         IntentFilter filter = new IntentFilter();
         filter.addAction(Intent.ACTION_TIME_TICK);
         filter.addAction(Intent.ACTION_TIME_CHANGED);
         filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
-        mActivity.registerReceiver(this,filter);
+        context.registerReceiver(this,filter);
     }
 
     @Override
@@ -30,7 +25,17 @@ public class TimeBroadcastReceiver extends BroadcastReceiver {
         String action = intent.getAction();
         assert action != null;
         if (action.equals(Intent.ACTION_TIME_TICK)) {
-            mActivity.onReceiveTimeBroadcast();
+            if (mTimeChangeListener != null) {
+                mTimeChangeListener.onReceiveTimeChangeBroadcast();
+            }
         }
     }
+
+    public void setOnTimeBroadcastListener(OnTimeBroadcastListener timeChangeListener) {
+        this.mTimeChangeListener = timeChangeListener;
+    }
+
+    public interface OnTimeBroadcastListener {
+        void onReceiveTimeChangeBroadcast();
+    }
 }