音量变化监听器?

13

有没有办法在Android服务中监听音量变化并对其做出反应?

顺便问一下:Google音乐应用程序是如何让用户在音乐在后台播放时控制媒体音量的呢?

1个回答

12

请查看registerMediaButtonEventReceiver(ComponentName broadcastReceiver);

定义一个BroadcastReceiver来处理ACTION_MEDIA_BUTTON。接收到的意图包含一个额外的字段EXTRA_KEY_EVENT,其中包含导致广播的键事件。您可以使用此键事件来获取按下的哪个键。


编辑:
这只是示例代码,可能存在语法错误。

// in onCreate of activity
registerMediaButtonEventReceiver(mediaReceiver ); 

// later somewhere in activity.
MediaButton_Receiver mediaReceiver = new MediaButton_Receiver();

class MediaButton_Receiver implements BroadcastReceiver {
     void onReceive(Intent intent) {

          KeyEvent ke = (KeyEvent)intent.getExtra(Intent.EXTRA_KEY_EVENT); 
          if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {

          }
          // Similarly other key codes .......
     } 
}

onPause()onStop() 中取消注册广播接收器。


请您能否举个例子呢? - kevdliu
我已经添加了示例代码。但是它存在语法错误。还应该检查按键按下或松开的操作。作为开始,这很好,稍后再添加。 - Ron
还要不要忘记注销接收器,否则使用媒体按钮事件的其他应用程序可能会受到影响。 - Ron
@userSeven7s 当我使用音量控制键调整音量时,我没有收到任何意图,但是当我使用耳机上的按钮时,我会收到。音量控制键应该也可以工作吗? - tidbeck
// 应该放在 onResume 中 registerMediaButtonEventReceiver(mediaReceiver); - letroll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接