Android音频接收器BroadcastReceiver(Android操作系统错误)



我试图创建一个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广播时才会执行。

最新更新