version:1.3.6

fix:
update:显示微信抖音
This commit is contained in:
2024-11-04 09:45:57 +08:00
parent 5ab9e05191
commit b55ceaa93a
4 changed files with 173 additions and 14 deletions

View File

@@ -4,6 +4,7 @@ import android.Manifest;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -14,11 +15,15 @@ import android.database.Cursor;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.CallLog;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.speech.tts.TextToSpeech;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
@@ -81,10 +86,12 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
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";
@@ -107,8 +114,10 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
private int appListIndex = 0;
private int defaultCurrent = 0;
private CameraManager cameraManager;
private CameraManager mCameraManager;
private boolean flashing = false;
private TelephonyManager mTelephonyManager;
private PhoneStateListener mPhoneStateListener;
// private DockAppAdapter mDockAppAdapter;
private DockAppGridAdapter mDockAppGridAdapter;
@@ -178,7 +187,30 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
// Toaster.show("请授予\"" + getString(R.string.app_name) + "\"使用通知权");
// 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();
mFragmentTransaction = mFragmentManager.beginTransaction();
@@ -284,6 +316,60 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
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() {
int size0 = NotificationService.getNotificationLength("com.android.dialer");
if (size0 == 0) {
@@ -900,6 +986,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
registmUpdateAddressReceiver();
registerTimeReceiver();
registerMissCallReceiver();
registerPhoneStateReceiver();
}
private void unregisterAllReceiver() {
@@ -921,6 +1008,9 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
if (mMissCallReceiver != null) {
unregisterReceiver(mMissCallReceiver);
}
if (mPhoneStateReceiver != null) {
unregisterReceiver(mPhoneStateReceiver);
}
}
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() {
LiveEventBus
.get("time")
@@ -1138,8 +1292,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
public void openFlash(View v) {
if (flashing) {
try {
String CameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(CameraId, false);
String CameraId = mCameraManager.getCameraIdList()[0];
mCameraManager.setTorchMode(CameraId, false);
} catch (CameraAccessException e) {
e.printStackTrace();
}
@@ -1148,8 +1302,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
} else {
try {
String CameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(CameraId, true);
String CameraId = mCameraManager.getCameraIdList()[0];
mCameraManager.setTorchMode(CameraId, true);
} catch (CameraAccessException e) {
e.printStackTrace();
}

View File

@@ -38,12 +38,17 @@ public class AppStatusManager {
this.add("com.android.calculator2");
this.add("com.android.calendar");
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>() {{
this.add("com.android.contacts");
this.add("com.android.dialer");
this.add("com.mediatek.camera");
// this.add("com.mediatek.camera");
this.add("cn.etouch.ecalendar");
}};

View File

@@ -180,12 +180,12 @@ public class ApkUtils {
this.add("com.xxpatx.os");
this.add("com.xxpatx.store");
this.add("com.android.quicksearchbox");
this.add("com.android.stk");
// this.add("com.android.stk");
this.add("com.debug.loggerui");
this.add("com.mediatek.gnss.nonframeworklbs");
this.add("com.tencent.mm");
this.add("com.ss.android.ugc.aweme");
this.add("com.mediatek.camera");
// this.add("com.tencent.mm");
// this.add("com.ss.android.ugc.aweme");
// this.add("com.mediatek.camera");
this.add("cn.etouch.ecalendar");
}};