version:1.3.6
fix: update:显示微信抖音
This commit is contained in:
@@ -15,8 +15,8 @@ android {
|
|||||||
applicationId "com.xxpatx.os"
|
applicationId "com.xxpatx.os"
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
versionCode 1036
|
versionCode 1037
|
||||||
versionName "1.3.5"
|
versionName "1.3.6"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.Manifest;
|
|||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
@@ -14,11 +15,15 @@ import android.database.Cursor;
|
|||||||
import android.hardware.camera2.CameraAccessException;
|
import android.hardware.camera2.CameraAccessException;
|
||||||
import android.hardware.camera2.CameraCharacteristics;
|
import android.hardware.camera2.CameraCharacteristics;
|
||||||
import android.hardware.camera2.CameraManager;
|
import android.hardware.camera2.CameraManager;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.CallLog;
|
import android.provider.CallLog;
|
||||||
import android.provider.ContactsContract;
|
import android.provider.ContactsContract;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.speech.tts.TextToSpeech;
|
||||||
|
import android.telephony.PhoneStateListener;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
@@ -81,10 +86,12 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import static com.arialyy.aria.core.inf.IEntity.STATE_RUNNING;
|
import static com.arialyy.aria.core.inf.IEntity.STATE_RUNNING;
|
||||||
|
|
||||||
public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBinding> implements NetworkUtils.OnNetworkStatusChangedListener, NotificationService.NotificationListener {
|
public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBinding> implements NetworkUtils.OnNetworkStatusChangedListener,
|
||||||
|
NotificationService.NotificationListener, TextToSpeech.OnInitListener {
|
||||||
private static final String TAG = "MainActivity";
|
private static final String TAG = "MainActivity";
|
||||||
|
|
||||||
|
|
||||||
@@ -107,8 +114,10 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
private int appListIndex = 0;
|
private int appListIndex = 0;
|
||||||
private int defaultCurrent = 0;
|
private int defaultCurrent = 0;
|
||||||
|
|
||||||
private CameraManager cameraManager;
|
private CameraManager mCameraManager;
|
||||||
private boolean flashing = false;
|
private boolean flashing = false;
|
||||||
|
private TelephonyManager mTelephonyManager;
|
||||||
|
private PhoneStateListener mPhoneStateListener;
|
||||||
|
|
||||||
// private DockAppAdapter mDockAppAdapter;
|
// private DockAppAdapter mDockAppAdapter;
|
||||||
private DockAppGridAdapter mDockAppGridAdapter;
|
private DockAppGridAdapter mDockAppGridAdapter;
|
||||||
@@ -178,7 +187,30 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
// Toaster.show("请授予\"" + getString(R.string.app_name) + "\"使用通知权");
|
// Toaster.show("请授予\"" + getString(R.string.app_name) + "\"使用通知权");
|
||||||
// gotoNotificationAccessSetting(MainActivity.this);
|
// gotoNotificationAccessSetting(MainActivity.this);
|
||||||
// }
|
// }
|
||||||
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
|
mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
|
||||||
|
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
|
mPhoneStateListener = new PhoneStateListener() {
|
||||||
|
@Override
|
||||||
|
public void onCallStateChanged(int state, String phoneNumber) {
|
||||||
|
super.onCallStateChanged(state, phoneNumber);
|
||||||
|
Log.e(TAG, "onCallStateChanged: state = " + state);
|
||||||
|
switch (state) {
|
||||||
|
case TelephonyManager.CALL_STATE_IDLE:
|
||||||
|
Log.e(TAG, "onCallStateChanged: 无状态");
|
||||||
|
break;
|
||||||
|
case TelephonyManager.CALL_STATE_OFFHOOK:
|
||||||
|
Log.e(TAG, "onCallStateChanged: 通话");
|
||||||
|
break;
|
||||||
|
case TelephonyManager.CALL_STATE_RINGING:
|
||||||
|
Log.e(TAG, "onCallStateChanged: 响铃");
|
||||||
|
getLatestIncomingCallNumber();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
|
||||||
|
|
||||||
mFragmentManager = getSupportFragmentManager();
|
mFragmentManager = getSupportFragmentManager();
|
||||||
mFragmentTransaction = mFragmentManager.beginTransaction();
|
mFragmentTransaction = mFragmentManager.beginTransaction();
|
||||||
@@ -284,6 +316,60 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
decorView.setSystemUiVisibility(uiOptions);
|
decorView.setSystemUiVisibility(uiOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getLatestIncomingCallNumber() {
|
||||||
|
String phoneNumber = "";
|
||||||
|
Cursor cursor = getContentResolver().query(
|
||||||
|
CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER},
|
||||||
|
CallLog.Calls.TYPE + " = " + CallLog.Calls.INCOMING_TYPE,
|
||||||
|
null,
|
||||||
|
CallLog.Calls.DATE + " DESC"
|
||||||
|
);
|
||||||
|
if (cursor != null) {
|
||||||
|
try {
|
||||||
|
if (cursor.moveToFirst()) {
|
||||||
|
phoneNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "getLatestIncomingCallNumber: " + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "getLatestIncomingCallNumber: cursor is null");
|
||||||
|
}
|
||||||
|
Log.e(TAG, "getLatestIncomingCallNumber: " + phoneNumber);
|
||||||
|
return phoneNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContactName(String number) {
|
||||||
|
if (TextUtils.isEmpty(number)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ContentResolver resolver = getContentResolver();
|
||||||
|
Uri lookupUri;
|
||||||
|
String[] projection = new String[]{ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME};
|
||||||
|
Cursor cursor = null;
|
||||||
|
try {
|
||||||
|
lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||||
|
cursor = resolver.query(lookupUri, projection, null, null, null);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
try {
|
||||||
|
lookupUri = Uri.withAppendedPath(android.provider.Contacts.Phones.CONTENT_FILTER_URL,
|
||||||
|
Uri.encode(number));
|
||||||
|
cursor = resolver.query(lookupUri, projection, null, null, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String ret = "";
|
||||||
|
if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {
|
||||||
|
ret = cursor.getString(1);
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateIconBg() {
|
private void updateIconBg() {
|
||||||
int size0 = NotificationService.getNotificationLength("com.android.dialer");
|
int size0 = NotificationService.getNotificationLength("com.android.dialer");
|
||||||
if (size0 == 0) {
|
if (size0 == 0) {
|
||||||
@@ -900,6 +986,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
registmUpdateAddressReceiver();
|
registmUpdateAddressReceiver();
|
||||||
registerTimeReceiver();
|
registerTimeReceiver();
|
||||||
registerMissCallReceiver();
|
registerMissCallReceiver();
|
||||||
|
registerPhoneStateReceiver();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unregisterAllReceiver() {
|
private void unregisterAllReceiver() {
|
||||||
@@ -921,6 +1008,9 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
if (mMissCallReceiver != null) {
|
if (mMissCallReceiver != null) {
|
||||||
unregisterReceiver(mMissCallReceiver);
|
unregisterReceiver(mMissCallReceiver);
|
||||||
}
|
}
|
||||||
|
if (mPhoneStateReceiver != null) {
|
||||||
|
unregisterReceiver(mPhoneStateReceiver);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registNewAppReceiver() {
|
private void registNewAppReceiver() {
|
||||||
@@ -1071,6 +1161,70 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PhoneStateReceiver mPhoneStateReceiver;
|
||||||
|
|
||||||
|
private void registerPhoneStateReceiver() {
|
||||||
|
if (mPhoneStateReceiver == null) {
|
||||||
|
mPhoneStateReceiver = new PhoneStateReceiver();
|
||||||
|
}
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction("android.intent.action.PHONE_STATE");
|
||||||
|
registerReceiver(mPhoneStateReceiver, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PhoneStateReceiver extends BroadcastReceiver {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
String action = intent.getAction();
|
||||||
|
if (TextUtils.equals(action, "android.intent.action.PHONE_STATE")) {
|
||||||
|
String state = intent.getStringExtra("state");
|
||||||
|
String number = intent.getStringExtra("incoming_number");
|
||||||
|
Log.e(TAG, "PhoneStateReceiver: state = " + state + ", number = " + number);
|
||||||
|
if (TelephonyManager.EXTRA_STATE_RINGING.equalsIgnoreCase(state)) {
|
||||||
|
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
|
||||||
|
Log.e(TAG, "onReceive: voiceBroadcast = " + voiceBroadcast);
|
||||||
|
if (voiceBroadcast) {
|
||||||
|
mTextToSpeech = new TextToSpeech(MainActivity.this, MainActivity.this);
|
||||||
|
if (TextUtils.isEmpty(number)) {
|
||||||
|
mPhoneInfo = "未知号码来电";
|
||||||
|
} else {
|
||||||
|
mPhoneInfo = "来自" + getContactName(number) + number + "的电话";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private TextToSpeech mTextToSpeech;
|
||||||
|
private String mPhoneInfo;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInit(int status) {
|
||||||
|
//初始化成功
|
||||||
|
if (status == TextToSpeech.SUCCESS) {
|
||||||
|
Log.e(TAG, "init success");
|
||||||
|
//设置语言
|
||||||
|
int result = mTextToSpeech.setLanguage(Locale.CHINA);
|
||||||
|
if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
|
||||||
|
&& result != TextToSpeech.LANG_AVAILABLE) {
|
||||||
|
} else {
|
||||||
|
//设置音调
|
||||||
|
mTextToSpeech.setPitch(1.0f);
|
||||||
|
//设置语速,1.0为正常语速
|
||||||
|
mTextToSpeech.setSpeechRate(1.0f);
|
||||||
|
//播放
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
stringBuilder.append(mPhoneInfo);
|
||||||
|
mTextToSpeech.speak(stringBuilder.toString(), TextToSpeech.QUEUE_ADD, null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "init fail");
|
||||||
|
Toaster.showLong("TTS初始化失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void setTime() {
|
private void setTime() {
|
||||||
LiveEventBus
|
LiveEventBus
|
||||||
.get("time")
|
.get("time")
|
||||||
@@ -1138,8 +1292,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
public void openFlash(View v) {
|
public void openFlash(View v) {
|
||||||
if (flashing) {
|
if (flashing) {
|
||||||
try {
|
try {
|
||||||
String CameraId = cameraManager.getCameraIdList()[0];
|
String CameraId = mCameraManager.getCameraIdList()[0];
|
||||||
cameraManager.setTorchMode(CameraId, false);
|
mCameraManager.setTorchMode(CameraId, false);
|
||||||
} catch (CameraAccessException e) {
|
} catch (CameraAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -1148,8 +1302,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
|||||||
// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
|
// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
String CameraId = cameraManager.getCameraIdList()[0];
|
String CameraId = mCameraManager.getCameraIdList()[0];
|
||||||
cameraManager.setTorchMode(CameraId, true);
|
mCameraManager.setTorchMode(CameraId, true);
|
||||||
} catch (CameraAccessException e) {
|
} catch (CameraAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,12 +38,17 @@ public class AppStatusManager {
|
|||||||
this.add("com.android.calculator2");
|
this.add("com.android.calculator2");
|
||||||
this.add("com.android.calendar");
|
this.add("com.android.calendar");
|
||||||
this.add("com.android.settings");
|
this.add("com.android.settings");
|
||||||
|
this.add("com.android.stk");
|
||||||
|
this.add("com.tencent.mm");
|
||||||
|
this.add("com.ss.android.ugc.aweme");
|
||||||
|
this.add("com.mediatek.camera");
|
||||||
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
private static final Set<String> mExcludeApp = new HashSet<String>() {{
|
private static final Set<String> mExcludeApp = new HashSet<String>() {{
|
||||||
this.add("com.android.contacts");
|
this.add("com.android.contacts");
|
||||||
this.add("com.android.dialer");
|
this.add("com.android.dialer");
|
||||||
this.add("com.mediatek.camera");
|
// this.add("com.mediatek.camera");
|
||||||
this.add("cn.etouch.ecalendar");
|
this.add("cn.etouch.ecalendar");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
@@ -180,12 +180,12 @@ public class ApkUtils {
|
|||||||
this.add("com.xxpatx.os");
|
this.add("com.xxpatx.os");
|
||||||
this.add("com.xxpatx.store");
|
this.add("com.xxpatx.store");
|
||||||
this.add("com.android.quicksearchbox");
|
this.add("com.android.quicksearchbox");
|
||||||
this.add("com.android.stk");
|
// this.add("com.android.stk");
|
||||||
this.add("com.debug.loggerui");
|
this.add("com.debug.loggerui");
|
||||||
this.add("com.mediatek.gnss.nonframeworklbs");
|
this.add("com.mediatek.gnss.nonframeworklbs");
|
||||||
this.add("com.tencent.mm");
|
// this.add("com.tencent.mm");
|
||||||
this.add("com.ss.android.ugc.aweme");
|
// this.add("com.ss.android.ugc.aweme");
|
||||||
this.add("com.mediatek.camera");
|
// this.add("com.mediatek.camera");
|
||||||
this.add("cn.etouch.ecalendar");
|
this.add("cn.etouch.ecalendar");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user