Я пишу приложение, которое ловит медиа-кнопки с помощью гарнитуры bt. Однако, поскольку мой приемник указан в файле манифеста, я больше не могу контролировать свою деятельность, и я действительно хочу сделать это, чтобы «нажать» программную кнопку в действии, когда кто-то нажимает кнопку гарнитуры ,Обновление деятельности от отдельного вещательного устройства, как?
Я пробовал несколько решений, но у меня ничего не получилось. Вот мое текущее состояние
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 в запуске анонимного приемника?
Вы объявляете требуемые разрешения в AndroidManifest.xml? – tundundun
какое разрешение ...? –