bt-headsetからmedia-button-clicksをキャッチするアプリケーションを書いています。ただし、受信者がマニフェストファイルに記載されているため、突然アクティビティを制御できなくなります。本当にやりたいのは、誰かがヘッドセットボタンを押したときに、アクティビティのソフトウェアボタンを「押す」ことです。 。
私はいくつかの解決策を試しましたが、何も機能しませんでした。これが私の現在の状態です
package com.siriforreq.activities;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MediaButtonReceiver extends BroadcastReceiver{
private boolean gotMessage = false;
public MediaButtonReceiver(){
super();
}
public boolean isMessage(){
return this.gotMessage;
}
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("IN ON RECEIVE1");
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
System.out.println("GOT MEDIA BUTTON");
Intent startBroadcastIntent = new Intent(context, NetworkActivity.class);
startBroadcastIntent.setAction("com.siriforerq.activities.ACTION_LOL");
startBroadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
System.out.println("...sending broadcast");
context.sendBroadcast(startBroadcastIntent);
}
}
}
上記のレシーバーでは、メディアボタンをキャッチします。しかし、アクティビティを更新するには、これからどこに行きますか?私が今やろうとしているのは、別のカスタムブロードキャストを送信し、アクティビティ内の別のレシーバーでそれをキャッチすることですが、機能していないようです。これが私の活動です:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network);
mMediaReceiverCompName = new ComponentName(getPackageName(), MediaButtonReceiver.class.getName());
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
IntentFilter btCommunicationFilter = new IntentFilter();
btCommunicationFilter.setPriority(1000);
btCommunicationFilter.addAction("com.siriforerq.activities.ACTION_LOL");
catchButtonEvent = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Got broadcast yes");
//startTalkInteraction(); <- this is the method I want to call in the activity
}
};
registerReceiver(catchButtonEvent, btCommunicationFilter);
}
public void onResume() {
super.onResume();
mAudioManager.registerMediaButtonEventReceiver(mMediaReceiverCompName);
socketNetworkHelper = SocketNetworkHelper.getSocketNetworkHelper(ip, port);
setButtonStatus(true);
}
上記の匿名受信機では、MediaButtonReceiverから送信されているブロードキャストが呼び出されることはなく、これが現在の私の問題です。別の方法で考える必要がありますか、それとも匿名のレシーバークラストリガーでonReceiveを使用しないのはなぜですか?