From 3734a659ff0a7023b9e59a1b66eac7b4eebe37ed Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Wed, 26 Feb 2025 04:35:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=BB=E8=A6=81=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=90=AF=E5=8A=A8=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contacts/build.properties | 4 +- .../winboll/studio/contacts/MainActivity.java | 12 ++++- .../contacts/activities/SettingsActivity.java | 24 +++++++++- .../studio/contacts/services/MainService.java | 47 +++++++++++++++---- .../src/main/res/layout/activity_settings.xml | 19 ++++++++ 5 files changed, 92 insertions(+), 14 deletions(-) diff --git a/contacts/build.properties b/contacts/build.properties index 61d13e3..414eead 100644 --- a/contacts/build.properties +++ b/contacts/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Feb 25 19:32:36 GMT 2025 +#Tue Feb 25 20:33:54 GMT 2025 stageCount=2 libraryProject= baseVersion=1.0 publishVersion=1.0.1 -buildCount=34 +buildCount=41 baseBetaVersion=1.0.2 diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java index 24f9f4f..c3241ee 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java @@ -47,6 +47,8 @@ import java.util.ArrayList; import java.util.List; import android.content.DialogInterface; import cc.winboll.studio.contacts.activities.SettingsActivity; +import cc.winboll.studio.contacts.beans.MainServiceBean; +import cc.winboll.studio.contacts.services.MainService; final public class MainActivity extends AppCompatActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { @@ -140,7 +142,15 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct // } // } // }); - MainService.startMainService(MainActivity.this); + + MainServiceBean mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); + if (mMainServiceBean == null) { + mMainServiceBean = new MainServiceBean(); + MainServiceBean.saveBean(this, mMainServiceBean); + } + if (mMainServiceBean.isEnable()) { + MainService.startMainService(this); + } } //初始化view,即显示的图片 diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java index bad98bc..4525b54 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java @@ -28,6 +28,8 @@ import com.hjq.toast.ToastUtils; import java.lang.reflect.Field; import android.widget.SeekBar; import android.widget.TextView; +import cc.winboll.studio.contacts.beans.MainServiceBean; +import cc.winboll.studio.contacts.services.MainService; public class SettingsActivity extends AppCompatActivity implements IWinBollActivity { @@ -39,6 +41,7 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv TextView mtvVolume; int mnStreamMaxVolume; int mnStreamVolume; + Switch mswMainService; @Override @@ -85,6 +88,23 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv } getSupportActionBar().setSubtitle(getTag()); + mswMainService = findViewById(R.id.sw_mainservice); + MainServiceBean mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); + mswMainService.setChecked(mMainServiceBean.isEnable()); + mswMainService.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View arg0) { + // TODO: Implement this method + if (mswMainService.isChecked()) { + //ToastUtils.show("Is Checked"); + MainService.startMainService(SettingsActivity.this); + } else { + //ToastUtils.show("Not Checked"); + MainService.stopMainService(SettingsActivity.this); + } + } + }); + msbVolume = findViewById(R.id.bellvolume); mtvVolume = findViewById(R.id.tv_volume); final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); @@ -95,7 +115,7 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv // 获取当前铃声音量并设置为SeekBar的初始进度 mnStreamVolume = audioManager.getStreamVolume(AudioManager.STREAM_RING); msbVolume.setProgress(mnStreamVolume); - + updateStreamVolumeTextView(); msbVolume.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @@ -127,7 +147,7 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv } }); } - + void updateStreamVolumeTextView() { mtvVolume.setText(String.format("%d/%d", mnStreamVolume, mnStreamMaxVolume)); } 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 3eef1a4..9ad9eec 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 @@ -30,6 +30,9 @@ import cc.winboll.studio.libappbase.bean.APPSOSBean; import cc.winboll.studio.contacts.dun.Rules; import android.media.AudioManager; import com.hjq.toast.ToastUtils; +import java.util.Timer; +import java.util.TimerTask; +import cc.winboll.studio.contacts.beans.RingTongBean; public class MainService extends Service { @@ -48,8 +51,8 @@ public class MainService extends Service { AssistantService mAssistantService; boolean isBound = false; MainReceiver mMainReceiver; - - + Timer mStreamVolumeCheckTimer; + @Override public IBinder onBind(Intent intent) { return new MyBinder(); @@ -71,9 +74,35 @@ public class MainService extends Service { mMyServiceConnection = new MyServiceConnection(); } mMainServiceHandler = new MainServiceHandler(this); - - - + + // 铃声检查定时器 + mStreamVolumeCheckTimer = new Timer(); + mStreamVolumeCheckTimer.schedule(new TimerTask() { + @Override + public void run() { + AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); + + // 恢复铃声音量,预防其他意外条件导致的音量变化问题 + // + + // 读取应用配置,未配置就初始化配置文件 + RingTongBean bean = RingTongBean.loadBean(MainService.this, RingTongBean.class); + if (bean == null) { + // 初始化配置 + bean = new RingTongBean(); + RingTongBean.saveBean(MainService.this, bean); + } + // 如果当前音量和应用保存的不一致就恢复为应用设定值 + // 恢复铃声音量 + try { + audioManager.setStreamVolume(AudioManager.STREAM_RING, bean.getStreamVolume(), 0); + //audioManager.setMode(AudioManager.RINGER_MODE_NORMAL); + } catch (java.lang.SecurityException e) { + LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); + } + } + }, 1000, 60000); + // 运行服务内容 mainService(); } @@ -104,11 +133,11 @@ public class MainService extends Service { mMainReceiver = new MainReceiver(this); mMainReceiver.registerAction(this); } - + Rules.getInstance(this); //Rules.getInstance(this).add("18888888888", true); //Rules.getInstance(this).add("16769764848", true); - + startPhoneCallListener(); MainServiceThread.getInstance(this, mMainServiceHandler).start(); @@ -137,7 +166,7 @@ public class MainService extends Service { // LogUtils.d(TAG, "startService(intent)"); // bindService(new Intent(this, AssistantService.class), mMyServiceConnection, Context.BIND_IMPORTANT); } - + void startPhoneCallListener() { Intent callListener = new Intent(this, CallListenerService.class); startService(callListener); @@ -168,7 +197,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 6ce953a..c68fcc2 100644 --- a/contacts/src/main/res/layout/activity_settings.xml +++ b/contacts/src/main/res/layout/activity_settings.xml @@ -18,6 +18,25 @@ android:layout_height="0dp" android:layout_weight="1.0"> + + + + + + + +