【发布时间】:2015-04-09 07:53:57
【问题描述】:
我尝试创建一个 audioReceiver 广播。允许我的用户仅在插件中有 HeadSet 的情况下听音乐。
代码如下:
private BroadcastReceiver audioReceiver = new BroadcastReceiver()
{ @Override
public void onReceive(Context context, Intent intent)
{ AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
headsetIsPluggedIn = (intent.getExtras().getInt("state")==1);
if(headsetIsPluggedIn) //plugged
{ Log.d("", "BroadcastReceiver - Unmute sound");
audio.setStreamMute(AudioManager.STREAM_MUSIC, false);
}
else //unplugged
{ Log.d("", "BroadcastReceiver - Mute sound");
audio.setStreamMute(AudioManager.STREAM_MUSIC, true);
// Inform user
Toast.makeText(DuplicatedPlayerActivity.this, "Please plug in your headset to enjoy the sound.", Toast.LENGTH_SHORT).show();
}
}
};
@Override
public void onResume() {
super.onResume();
if (HEADSET_ONLY) { registerReceiver(audioReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG)); }
清单
<receiver android:name="com.juno.brheadset.HeadsetStateReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
好的,这是有趣的部分。如果您重新启动设备,请运行我的应用程序。此功能将不起作用。
如果您将耳机插孔至少插入手机一次!退出我的应用程序,重新启动应用程序。该功能将正常工作,直到用户再次重启手机。
现在,为什么只有用户将插孔插入手机时,此功能才有效?
【问题讨论】:
标签: java android debugging google-api broadcastreceiver