liuzhenxing 3 anos atrás
pai
commit
3e3d8e653d

+ 24 - 1
app/src/main/java/com/xplora/xpsettings/Activity/SoundModeActivity.java

@@ -2,6 +2,7 @@ package com.xplora.xpsettings.Activity;
 
 import android.content.Intent;
 import android.media.AudioManager;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -11,6 +12,7 @@ import android.widget.AdapterView;
 import android.widget.ListView;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
 
 import com.xplora.xpsettings.Adapter.BaseListAdapter;
 import com.xplora.xpsettings.Model.BaseModel;
@@ -74,9 +76,10 @@ public class SoundModeActivity extends BaseActivity {
         });
     }
 
+    @RequiresApi(api = Build.VERSION_CODES.M)
     public void clickItem(int position) {
         switch (position) {
-            case 0: case 1: case 2:
+            case 0: case 1: {
                 int ringerMode = viewMode2RingerMode(position);
                 DataManager.setRingerMode(ringerMode);
                 for (int i = 0; i < 3; i++) {
@@ -86,6 +89,26 @@ public class SoundModeActivity extends BaseActivity {
                 mAdapter.setBaseObjects(mDataList);
                 mAdapter.notifyDataSetInvalidated();
                 break;
+            }
+            case 2: {
+                //获取Do not disturb权限,才可进行音量操作
+                if (!DataManager.hasSilentPermission()) {
+                    Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
+                    startActivity(intent);
+                } else {
+                    int ringerMode = viewMode2RingerMode(position);
+                    DataManager.setRingerMode(ringerMode);
+                    for (int i = 0; i < 3; i++) {
+                        BaseModel model = mDataList.get(i);
+                        model.isOn = position == i;
+                    }
+                    mAdapter.setBaseObjects(mDataList);
+                    mAdapter.notifyDataSetInvalidated();
+                }
+                break;
+            }
+            case 3:
+                break;
             case 4:
                 Intent intent1 = new Intent(SoundModeActivity.this, VolumeActivity.class);
                 startActivity(intent1);

+ 13 - 0
app/src/main/java/com/xplora/xpsettings/data/DataManager.java

@@ -4,6 +4,7 @@ import android.Manifest;
 import android.app.ActivityManagerNative;
 import android.app.Application;
 import android.app.IActivityManager;
+import android.app.NotificationManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -23,6 +24,7 @@ import com.xplora.xpsettings.Model.ApnModel;
 import com.xplora.xpsettings.Utils.Constant;
 
 import java.lang.reflect.Field;
+import java.sql.Struct;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -155,6 +157,15 @@ public class DataManager extends Application {
         }
     }
 
+    //获取是否允许静音
+    public static boolean hasSilentPermission() {
+        NotificationManager notificationManager = (NotificationManager)sContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && !notificationManager.isNotificationPolicyAccessGranted()) {
+            return false;
+        }
+        return true;
+    }
+
     public static int getSystemVolume() {
         if (Constant.DEBUG) {
             return mSystemVolume;
@@ -215,6 +226,8 @@ public class DataManager extends Application {
 
     public static void setIsVibrate(int mIsVibrate) {
         DataManager.mIsVibrate = mIsVibrate;
+//        AudioManager audioManager = (AudioManager)sContext.getSystemService(Context.AUDIO_SERVICE);
+//        audioManager.setVibrateSetting();
     }
 
     public static int getVolume(int type) {