【问题标题】:Android audioReceiver BroadcastReceiver (Android OS Bug)Android audioReceiver BroadcastReceiver(Android 操作系统错误)
【发布时间】: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


    【解决方案1】:

    “现在,为什么这个功能只有在用户将插孔插入手机时才有效?” --> 因为您已经在“android.intent.action.HEADSET_PLUG”的接收器中编写了代码。您的代码只会在您收到耳机插头广播时执行。

    【讨论】:

    • 或者,如何模拟耳机插件进出?
    • 您只能在您的应用程序中执行此操作。即使在其他音乐播放器中这样做也需要付出很多努力。如果您希望它在您的应用程序中工作,只需检查耳机是否已插入并根据该问题播放与否。如果我回答正确,请点赞。
    • 您可以从命令行发送虚假广播来模拟耳机插头。
    • 您可以使用:adb shell am broadcast -a android.intent.action.HEADSET_PLUG 从命令行发送虚假广播。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2023-03-22
    相关资源
    最近更新 更多