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.xxx.shutdown_action";
	private static final String SETTIME_ACTION = "com.xxx.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);
			}
      }
    };
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那肯定是很多年以后!

你的鼓励就我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值