Java Android audioReceiver广播接收器(Android操作系统错误)
我试图创建一个音频接收器广播。允许我的用户仅在耳机插入插件时收听音乐 代码如下:Java Android audioReceiver广播接收器(Android操作系统错误),java,android,debugging,google-api,broadcastreceiver,Java,Android,Debugging,Google Api,Broadcastreceiver,我试图创建一个音频接收器广播。允许我的用户仅在耳机插入插件时收听音乐 代码如下: private BroadcastReceiver audioReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { AudioManager audio = (AudioManager) getSystemService(Context.A
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\u PLUG”操作的接收器中编写了代码。您的代码仅在接收耳机插头广播时执行。或者,如何模拟耳机插件的输入和输出?您只能在应用程序中执行此操作。即使在其他音乐播放器中也要这样做,这需要付出很大的努力。若你们想让它在你们的应用程序中工作,只需检查耳机是否插好,并根据这个问题播放或不播放。如果我回答正确,请向上投票。您可以从命令行发送假广播以模拟耳机插头。您可以使用:adb shell am broadcast-a android.intent.action.headset_插头从命令行发送假广播。