import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
HandlerThread handlerThread = new HandlerThread("IC:SOS");
handlerThread.start();
handler = new Handler(handlerThread.getLooper());
+ initContentObserver();
//获取配置数据
initLoopTime();
initCallWays();
handler.post(this::sosTask);
}
+ /**
+ * 观察SOS号码的变化
+ */
+ private void initContentObserver() {
+ ContentResolver contentResolver = mContext.getContentResolver();
+ contentResolver.registerContentObserver(Uri.parse(MEMBERS), true,
+ contentObserver);
+ }
+
+ private final ContentObserver contentObserver = new ContentObserver(null) {
+ @Override
+ public void onChange(boolean selfChange) {
+ handler.post(() -> {
+ sosTask();
+ });
+ }
+ };
+
//是否有接听
private boolean hasRemoteAnswer = false;
* 以下内容都在子线程执行了,注意安全
*/
private void sosTask() {
+ //重置数据
+ this.currentCallIndex = 0;
+ this.currentLoopGroupTime = 0;
+ this.hasRemoteAnswer = false;
+ this.hasFirstCall = false;
boolean hasSim = this.checkHasSim();
ICLogger.d("hasSim ==> " + hasSim);
if (hasSim) {
hasFirstCall = false;
phoneNumList.clear();
mContext.unregisterReceiver(stateReceiver);
+ mContext.getContentResolver().unregisterContentObserver(contentObserver);
}
}