我试图创建一个audioReceiver广播。允许我的用户只在插入耳机的情况下听音乐。
这是代码:
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"/>
好的,这是有趣的部分。如果重新启动设备,请运行我的应用程序。此功能将不起作用。
如果你至少把耳机插孔插入手机一次!退出我的应用程序,重新启动应用程序。该功能将正常工作,直到用户再次启动手机。
现在,为什么只有当用户将插孔插入手机时,这个功能才能工作?
"现在,为什么只有当用户将插孔插入手机时,这个功能才能工作?"-->因为您已经在动作接收器"android.intent.action.HEADSET_PLUG"中编写了代码。您的代码只有在收到HEADSET_PLUG广播时才会执行。