2012-04-27 69 views
1

此代码无效将屏幕锁定。如果我希望音量键在屏幕锁定的情况下工作,我应该怎么做?屏幕锁定时使用音量键

我的代码是:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    int action = event.getAction(); 
    int keyCode = event.getKeyCode(); 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_VOLUME_UP: 
      if (action == KeyEvent.ACTION_UP) { 
       //TODO 
      } 
      return true; 
     case KeyEvent.KEYCODE_VOLUME_DOWN: 
      if (action == KeyEvent.ACTION_DOWN) { 
       //TODO 
      } 
      return true; 
     default: 
      return super.dispatchKeyEvent(event); 
     } 
    } 

回答

3

您可以用行动 “android.media.VOLUME_CHANGED_ACTION” 注册BroadcastReceiver

android.media.VOLUME_CHANGED_ACTION 

做的另一种方法是:volume key on Android

+0

我的代码实际上工作正常,但问题是,屏幕锁定时不起作用。我必须做什么?如果可能的话,请给我一个例子。谢谢。 – 2012-04-27 12:57:28

+0

它不工作。我创建了一个BroadCastReceiver,它在手机没有锁定时工作正常,但只要手机锁定,我无法捕获按键。你有什么主意吗? – 2015-04-26 19:43:35

+0

@mrsh你找到了解决方案吗?我面临同样的问题 – 2016-03-17 17:28:04

1

在服务中做到这一点:

public class MyService extends Service { 

@Override 
public void onCreate() { 
    super.onCreate(); 
    final BroadcastReceiver vReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //your code here 
     } 
    }; 
    registerReceiver(vReceiver, new IntentFilter("android.media.VOLUME_CHANGED_ACTION")); 
} 

} 

然后用行动Intent.ACTION_SCREEN_OFF注册广播接收器连续播放无声声音时,屏幕关闭和行动Intent.ACTION_SCREEN_ON停止音乐时,屏幕上。音量按钮仅在播放音乐时有效。

+0

非常感谢,我怎样才能连续播放沉默的声音? – 2016-06-28 13:09:44

+0

您可以使用SoundPool,MediaPlayer或ToneGenerator。使用这两个模板,请从http://www.xamuel.com/blank-mp3s/下载一个空白音乐文件,使用SoundPool.play(load,0,0,0,-1,1)或MediaPlayer.setLooping( true)和.setVolume(0,0)播放无声和连续的声音。使用ToneGenerator时,请使用ToneGenerator.startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE)。 https://developer.android.com/reference/android/media/SoundPool.html https://developer.android.com/reference/android/media/MediaPlayer.html https://developer.android.com /reference/android/media/ToneGenerator.html – 2016-06-28 17:28:06