媒体播放器应该在我的 android 应用程序中以编程方式断开耳机连接时停止
media player should stop on disconnecting headphone in my android app programatically
我在开发媒体播放器应用程序时遇到问题。
我想要它,这样当我从设备上取下耳机时,应用程序中的 MediaPlayer 就会暂停。
当有人插入或拔出耳机时,您可以通过广播获得 ACTION_HEADSET_PLUG 意图。
在您的应用程序启动时,您可以使用 AudioManager.isWiredHeadsetOn() 检查此时是否插入了耳机。 (不要忘记添加 MODIFY_AUDIO_SETTINGS 权限。)
Android 文档建议使用 AUDIO_BECOMING_NOISY 意图过滤器
在您的 manafest 中设置 intent 过滤器,然后:
public class MusicIntentReceiver extends android.content.BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if (intent.getAction().equals(
android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
// signal your service to stop playback
// (via an Intent, for instance)
}
}
}
信息:http://developer.android.com/guide/topics/media/mediaplayer.html#noisyintent
在同一 Activity 中注册广播。
private BroadcastReceiver mNoisyReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if( mMediaPlayer != null && mMediaPlayer.isPlaying() ) {
mMediaPlayer.pause();
}
}
};
处理耳机拔下插头。无法通过清单接收器完成
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
IntentFilter filter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
registerReceiver(mNoisyReceiver, filter);
}
注销接收器
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mNoisyReceiver);
}
我在开发媒体播放器应用程序时遇到问题。
我想要它,这样当我从设备上取下耳机时,应用程序中的 MediaPlayer 就会暂停。
当有人插入或拔出耳机时,您可以通过广播获得 ACTION_HEADSET_PLUG 意图。
在您的应用程序启动时,您可以使用 AudioManager.isWiredHeadsetOn() 检查此时是否插入了耳机。 (不要忘记添加 MODIFY_AUDIO_SETTINGS 权限。)
Android 文档建议使用 AUDIO_BECOMING_NOISY 意图过滤器
在您的 manafest 中设置 intent 过滤器,然后:
public class MusicIntentReceiver extends android.content.BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if (intent.getAction().equals(
android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
// signal your service to stop playback
// (via an Intent, for instance)
}
}
}
信息:http://developer.android.com/guide/topics/media/mediaplayer.html#noisyintent
在同一 Activity 中注册广播。
private BroadcastReceiver mNoisyReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if( mMediaPlayer != null && mMediaPlayer.isPlaying() ) {
mMediaPlayer.pause();
}
}
};
处理耳机拔下插头。无法通过清单接收器完成
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
IntentFilter filter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
registerReceiver(mNoisyReceiver, filter);
}
注销接收器
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mNoisyReceiver);
}