diff --git a/contacts/build.properties b/contacts/build.properties
index 02ca143..c0d52bb 100644
--- a/contacts/build.properties
+++ b/contacts/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Fri Feb 21 12:18:00 HKT 2025
+#Mon Feb 24 16:11:50 GMT 2025
stageCount=1
libraryProject=winboll-shared
baseVersion=1.0
publishVersion=1.0.0
-buildCount=0
+buildCount=32
baseBetaVersion=1.0.1
diff --git a/contacts/src/main/AndroidManifest.xml b/contacts/src/main/AndroidManifest.xml
index cd9ce54..36ac1ee 100644
--- a/contacts/src/main/AndroidManifest.xml
+++ b/contacts/src/main/AndroidManifest.xml
@@ -27,6 +27,11 @@
+
+
+
+
+
-
+
@@ -164,7 +169,7 @@
-
+
= Build.VERSION_CODES.M
&& !Settings.canDrawOverlays(this)) {
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/beans/RingTongBean.java b/contacts/src/main/java/cc/winboll/studio/contacts/beans/RingTongBean.java
new file mode 100644
index 0000000..792bce4
--- /dev/null
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/beans/RingTongBean.java
@@ -0,0 +1,74 @@
+package cc.winboll.studio.contacts.beans;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/24 18:47:11
+ * @Describe 手机铃声设置参数类
+ */
+import cc.winboll.studio.libappbase.BaseBean;
+import android.util.JsonWriter;
+import java.io.IOException;
+import android.media.AudioManager;
+import android.util.JsonReader;
+
+public class RingTongBean extends BaseBean {
+
+ public static final String TAG = "AudioRingTongBean";
+
+ // 模式
+ int ringerMode;
+
+ public RingTongBean() {
+ this.ringerMode = AudioManager.RINGER_MODE_NORMAL;
+ }
+
+ public RingTongBean(int ringerMode) {
+ this.ringerMode = ringerMode;
+ }
+
+ public void setRingerMode(int ringerMode) {
+ this.ringerMode = ringerMode;
+ }
+
+ public int getRingerMode() {
+ return ringerMode;
+ }
+
+ @Override
+ public String getName() {
+ return RingTongBean.class.getName();
+ }
+
+ @Override
+ public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
+ super.writeThisToJsonWriter(jsonWriter);
+ jsonWriter.name("ringerMode").value(getRingerMode());
+
+ }
+
+ @Override
+ public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException {
+ if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else {
+ if (name.equals("ringerMode")) {
+ setRingerMode(jsonReader.nextInt());
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException {
+ jsonReader.beginObject();
+ while (jsonReader.hasNext()) {
+ String name = jsonReader.nextName();
+ if (!initObjectsFromJsonReader(jsonReader, name)) {
+ jsonReader.skipValue();
+ }
+ }
+ // 结束 JSON 对象
+ jsonReader.endObject();
+ return this;
+ }
+}
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/phonecallui/PhoneCallService.java b/contacts/src/main/java/cc/winboll/studio/contacts/phonecallui/PhoneCallService.java
index a4d334b..88eb69e 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/phonecallui/PhoneCallService.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/phonecallui/PhoneCallService.java
@@ -13,22 +13,16 @@ import android.telecom.Call;
import android.telecom.InCallService;
import androidx.annotation.RequiresApi;
import cc.winboll.studio.contacts.ActivityStack;
-import cc.winboll.studio.contacts.beans.PhoneBlackRuleBean;
+import cc.winboll.studio.contacts.beans.RingTongBean;
import cc.winboll.studio.contacts.dun.Rules;
-import java.util.ArrayList;
+import cc.winboll.studio.libappbase.LogUtils;
@RequiresApi(api = Build.VERSION_CODES.M)
public class PhoneCallService extends InCallService {
- @Override
- public void onCreate() {
- super.onCreate();
-
- }
-
-
-
- private int originalRingVolume;
+ public static final String TAG = "PhoneCallService";
+
+ private volatile int originalRingVolume;
private final Call.Callback callback = new Call.Callback() {
@Override
@@ -69,13 +63,24 @@ public class PhoneCallService extends InCallService {
// 记录原始铃声音量
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
originalRingVolume = audioManager.getStreamVolume(AudioManager.STREAM_RING);
+ // 检查电话接收规则
if (!Rules.getInstance(this).isAllowed(phoneNumber)) {
// 预先静音
audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
+ // 断开电话
call.disconnect();
+ // 停顿1秒,预防第一声铃声响动
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ LogUtils.d(TAG, "");
+ }
+ // 恢复铃声音量
+ audioManager.setStreamVolume(AudioManager.STREAM_RING, originalRingVolume, 0);
+ // 屏蔽电话结束
return;
}
-
+ // 正常接听电话
PhoneCallActivity.actionStart(this, phoneNumber, callType);
}
}
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/receivers/MainReceiver.java b/contacts/src/main/java/cc/winboll/studio/contacts/receivers/MainReceiver.java
index f5da4f6..d1dfb52 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/receivers/MainReceiver.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/receivers/MainReceiver.java
@@ -9,19 +9,19 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.util.Log;
import cc.winboll.studio.contacts.services.MainService;
import com.hjq.toast.ToastUtils;
import java.lang.ref.WeakReference;
+import cc.winboll.studio.libappbase.LogUtils;
public class MainReceiver extends BroadcastReceiver {
public static final String TAG = "MainReceiver";
public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
WeakReference mwrService;
- // 存储电量指示值,
- // 用于校验电量消息时的电量变化
- static volatile int _mnTheQuantityOfElectricityOld = -1;
- static volatile boolean _mIsCharging = false;
public MainReceiver(MainService service) {
mwrService = new WeakReference(service);
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
index 643f064..3eef1a4 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
@@ -28,6 +28,8 @@ import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.SOS;
import cc.winboll.studio.libappbase.bean.APPSOSBean;
import cc.winboll.studio.contacts.dun.Rules;
+import android.media.AudioManager;
+import com.hjq.toast.ToastUtils;
public class MainService extends Service {
@@ -46,7 +48,8 @@ public class MainService extends Service {
AssistantService mAssistantService;
boolean isBound = false;
MainReceiver mMainReceiver;
-
+
+
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
@@ -68,7 +71,9 @@ public class MainService extends Service {
mMyServiceConnection = new MyServiceConnection();
}
mMainServiceHandler = new MainServiceHandler(this);
-
+
+
+
// 运行服务内容
mainService();
}
@@ -163,6 +168,7 @@ public class MainService extends Service {
// 停止主要进程
MainServiceThread.getInstance(this, mMainServiceHandler).setIsExit(true);
+
}
super.onDestroy();
diff --git a/contacts/src/main/res/layout/activity_settings.xml b/contacts/src/main/res/layout/activity_settings.xml
index b77a699..2122230 100644
--- a/contacts/src/main/res/layout/activity_settings.xml
+++ b/contacts/src/main/res/layout/activity_settings.xml
@@ -18,6 +18,11 @@
android:layout_height="0dp"
android:layout_weight="1.0">
+
+