gpt4 book ai didi

android - Android >=4.0 上的捕获媒体按钮(适用于 2.3)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:47 25 4
gpt4 key购买 nike

我编写了一些服务,它使用 BroadcastReceiver 来捕获其中一个媒体按钮(来自耳机的“播放按钮”),它在 android 2.3.x(HTC Nexus One 或 HTC Desire)上完美运行

当我尝试在 Android 4.0.3 (Samsung Nexus S) 上运行时它不起作用(我的应用程序没有收到意向“android.intent.action.MEDIA_BUTTON”和“播放”按钮的行为与往常一样:停止/开始播放音乐)。

list 内容:

...
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name=".buttonreceiver.MediaButtonIntentReceiver" >
<intent-filter android:priority="10000" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
...

有没有办法让它在android 4.0.3上运行


编辑:我已经尝试了建议的解决方案,我已经添加了操作并运行它,但我的接收器仍然没有收到 Intent 。更奇怪的是,通过代码注册接收器也不起作用:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_and_activation_view);

Log.d("MR", "onCreate - " + getIntent().getAction());

mReceiver = new MediaButtonIntentReceiver();
registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_MEDIA_BUTTON));
}

现在我完全糊涂了。

最佳答案

确保您的应用程序中有一个 Activity ,并且用户在尝试按下该按钮之前运行了该 Activity 。在那之前,你的 <receiver> will not receive any broadcasts .


更新

在 Android 4.0 及更高版本上,您似乎还需要调用 registerMediaButtonEventReceiver() on AudioManager 为了接收事件。该状态将一直保持到其他东西调用 registerMediaButtonEventReceiver()或直到您调用 unregisterMediaButtonEventReceiver() .

例如,这样的 Activity :

public class MediaButtonActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

((AudioManager)getSystemService(AUDIO_SERVICE)).registerMediaButtonEventReceiver(new ComponentName(
this,
MediaButtonReceiver.class));
}
}

将启用 list 注册 MediaButtonReceiver获取 ACTION_MEDIA_BUTTON 事件。

关于android - Android >=4.0 上的捕获媒体按钮(适用于 2.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10537184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com