PX30_android8.1设置每次开机媒体、闹铃、铃声音量为0

文件修改1

修改路径:px30_android-8.1\frameworks\base\services\core\java\com\android\server\display\DisplayManagerService.java
改三处地方:

     import android.util.SparseArray;
     import android.view.Display;
     import android.view.DisplayInfo;
     import android.view.Surface;
     import android.view.WindowManagerInternal;
+    import android.media.AudioManager;

     import com.android.server.AnimationThread;
     import com.android.server.DisplayThread;
     import com.android.server.LocalServices;
     private WindowManagerInternal mWindowManagerInternal;
     private InputManagerInternal mInputManagerInternal;
     private IMediaProjectionManager mProjectionService;

+    AudioManager mAudioManager;

     // The synchronization root for the display manager.
     // This lock guards most of the display manager's state.
     // NOTE: This is synchronized on while holding WindowManagerService.mWindowMap so      never call
     // into WindowManagerService methods that require mWindowMap while holding this unless      you are
     // very very sure that no deadlock can occur.
     PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
     mGlobalDisplayBrightness = pm.getDefaultScreenBrightnessSetting();
	
+     mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
}

     public void setupSchedulerPolicies() {
	  int diff = device.mDebugLastLoggedDeviceInfo.diff(info);
	  if (diff == DisplayDeviceInfo.DIFF_STATE) {
	  Slog.i(TAG, "Display device changed state: \"" + info.name
            + "\", " + Display.stateToString(info.state));
+	 if (info.state == Display.STATE_OFF){  
+	  mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 	  AudioManager.FLAG_PLAY_SOUND);
+	  mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_PLAY_SOUND);
+	  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND);
+	    }
	      } else if (diff != 0) {
      Slog.i(TAG, "Display device changed: " + info);
	  }
文件修改2

修改路径:px30_android-8.1\frameworks\base\services\java\com\android\server\HookObserver.java

class HookObserver extends UEventObserver {
    private static final String TAG = HookObserver.class.getSimpleName();
    private static final boolean LOG = true; 
    
    private static final String HOOK_UEVENT_MATCH = "DEVPATH=/devices/virtual/switch/hook";   // sys/devices/virtual/switch/hook
    private static final String HOOK_STATE_PATH = "/sys/class/switch/hook/state";

	//protected broadcast需要在frameworks/base/core/res/AndroidManifest.xml 文件夹声明一下
    public static final String ACTION_HOOK_EVENT = "android.intent.action.HOOK_EVENT";
    public static final String EXTRA_HOOK_STATE = "android.intent.extra.HOOK_STATE";

    public static final String PROPERTY_HOOK_STATE = "hw.hook.state";
      
    public static final int EXTRA_HOOK_STATE_INIT = -1;
    public static final int EXTRA_HOOK_STATE_ON = 0;
    public static final int EXTRA_HOOK_STATE_OFF = 1;

    private int mHookState = EXTRA_HOOK_STATE_INIT;
    private int mPreviousHookState = EXTRA_HOOK_STATE_INIT;

    private static final int MSG_HOOK_STATE = 0;
    private static final int MSG_SHUTDOWN = 1;

    private boolean mSystemReady = false;
//	private final CheckBoxPreference mCheckBoxPref;
    private boolean flag = true;
	private WifiManager wifiManager;
-   //AudioManager audioManager;
+   AudioManager mAudioManager;
	//private EthernetManager mEthManager;    
    private final Context mContext;
	//MediaPlayer mp = new MediaPlayer();
  //  private PowerManagerService mPowerManager;
   // private final WakeLock mWakeLock;       // held while there is a pending route change
  //  private final WakeLock mCpuWakeLock;  // block the CPU go to sleep

	private static final String SHUTDOWN_ACTION = "com.jld.shutdown_action";
	private static final String SETTIME_ACTION = "com.jld.set_time_action";
    public HookObserver(Context context) {
        mContext = context;
     /*   mPowerManager = pms;
        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);        
        mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "HookObserver");
        mWakeLock.setReferenceCounted(false);
        
        mCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "HookObserver CPU waklock");
        mCpuWakeLock.setReferenceCounted(false);
        mCpuWakeLock.acquire();  */
-       //audioManager =(AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
+       mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
		
        init();  // set initial status
		
		 // 
        /*        try {
                     mp.setDataSource("/system/media/boot.wav");
                     mp.prepare();
                     mp.start();
                  } catch (IllegalArgumentException e) {
                     e.printStackTrace();
                  } catch (IllegalStateException e) {
                     e.printStackTrace();
                  } catch (IOException e) {
                     e.printStackTrace();
                  }
					Slog.v(TAG, "boot music ok");*/

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BOOT_COMPLETED);        
        filter.addAction(SHUTDOWN_ACTION);        
        filter.addAction(SETTIME_ACTION);        
        mContext.registerReceiver(mBroadcastReceiver, filter, null, null);
  
        startObserving(HOOK_UEVENT_MATCH);
        
    }

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
          
            String action = intent.getAction();
            if (LOG) Slog.v(TAG, "BroadcastReceiver:" + action);  

            if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
				//add boot music for yong
            //    setAirplaneModeOn(true);
			//	delay(10000);
			//	setAirplaneModeOn(false);
			//	Slog.v(TAG, "open airplane");
            /*if(mp != null){
                mp.stop();
				 mp.release();
             }
				//	Slog.v(TAG, "boot music ok");*/
                // don't bother broadcasting undocked here
               // if (mHookState != EXTRA_HOOK_STATE_INIT) {
                    update();
					Slog.v(TAG, "hook update"+ mHookState);
               // } 
+                mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_PLAY_SOUND);
+                 mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_PLAY_SOUND);
+                 mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND);
            }else if(action.equals(SHUTDOWN_ACTION)){
				
				Intent intent1 = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);  
				 intent1.putExtra(Intent.EXTRA_KEY_CONFIRM, false);  
				 intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
				 context.startActivity(intent1); 
			}else if(action.equals(SETTIME_ACTION)){
				long time = intent.getLongExtra("time",0L);
				if(time > 0L)
					((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(time);
			}
      }
    };

猜你喜欢

转载自blog.csdn.net/qq_38312843/article/details/107483283