我的应用程序中有一个服务在后端运行,当我按下按钮音量时服务可以启动,当按下按钮音量时停止服务.
public class SettingsContentObserver extends ContentObserver { int previousVolume; Context context; public SettingsContentObserver(Context c, Handler handler) { super(handler); context=c; AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); previousVolume = audio.getStreamVolume(AudioManager.STREAM_RING); } @Override public boolean deliverSelfNotifications() { return super.deliverSelfNotifications(); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); int delta=previousVolume-currentVolume; if(delta > 0) { System.out.println("Decreased") ; Intent intent = new Intent(context, MyAlarmService.class); context.stopService(intent); previousVolume=currentVolume; } else if(delta < 0) { System.out.println("Increased"); Intent intent = new Intent(context, MyAlarmService.class); context.startService(intent); previousVolume=currentVolume; } } }
当我的手机被锁定时(屏幕关闭时)我想做同样的事情,当我在网上搜索时,我发现我必须使用BroadcastReceivre,我测试它但它不起作用.
public class YourBoardcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.e("get something", "i dont know what!!"); String intentAction = intent.getAction(); KeyEvent event = null; if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) { event = (KeyEvent) intent .getParcelableExtra(Intent.EXTRA_KEY_EVENT); } if (event == null) { return; } int keycode = event.getKeyCode(); int action = event.getAction(); long eventtime = event.getEventTime(); if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE || keycode == KeyEvent.KEYCODE_HEADSETHOOK) { if (action == KeyEvent.ACTION_DOWN) { Intent intent1 = new Intent(context, MyAlarmService.class); context.stopService(intent1); if (isOrderedBroadcast()) { abortBroadcast(); } else if (action == KeyEvent.ACTION_UP) { Intent intent11 = new Intent(context, MyAlarmService.class); context.startService(intent11); } if (isOrderedBroadcast()) { abortBroadcast(); } } } } }
在android清单中我添加:
并且在关于methode oncrete的mainActivity中我添加:
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); ComponentName mRemoteControlResponder = new ComponentName(getPackageName(), YourBoardcastReceiver.class.getName());
请问,我可以给我一些帮助.