在“为 Android 2.2 准备代码而不将其限制为 Android 2.2”之前,我一直按照此页面上的说明进行操作。即使我是针对 2.3 版本构建的,我想它现在应该可以工作,但事实并非如此。我在清单中注册了一个接收器:
<receiver android:name="RemoteControlReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
为 RemoteControlReceiver 声明创建了一个类:
public class RemoteControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();
}
}
最后在启动活动中增强了它。
private AudioManager _audioManager;
private ComponentName _componentName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
_componentName = new ComponentName(getPackageName(), RemoteControlReceiver.class.getName());
}
@Override
protected void onResume() {
super.onResume();
_audioManager.registerMediaButtonEventReceiver(_componentName);
_audioManager.requestAudioFocus(new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
Toast.makeText(getApplicationContext(), "onFocusChanged", Toast.LENGTH_SHORT).show();
}
}, AudioManager.STREAM_MUSIC, 0);
}
你能指出我在这里缺少什么吗?我有一个假设,为了接收消息,我的活动必须播放任何媒体内容。我马上去测试。
PS 如您所见,我什至添加了一些不必要的代码-不要注意 requestAudioFocus。
感谢您的任何建议。