Problème de détection des touches multimédia ???
Bonjour,
je voudrais créer une application radio mais j'ai un petit soucis:
Je n'arrive pas à garder actif la détection des touches multimédia de la radio.
Ca fonctionne 30 secondes puis les touches deviennent inactives.
MediaSession est initialisé dans un SERVICE dont voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| private void configureMediaSession() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
@SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = preferences.edit();
MediaSession s_mediaSession = new MediaSession(this, "MyMediaSession");
s_mediaSession.setCallback(new MediaSession.Callback() {
@Override
public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
KeyEvent ke = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
print("key:"+ke);
if (ke != null && ke.getAction() == KeyEvent.ACTION_DOWN) {
int keyCode = ke.getKeyCode();
if (keyCode==88){onSkipToNext();}
//87 -88
}
return super.onMediaButtonEvent(mediaButtonIntent);
}
@Override
public void onSkipToNext() {
nextRadio();
super.onSkipToNext();
}
@Override
public void onSkipToPrevious() {
super.onSkipToPrevious();
}
});
s_mediaSession.setActive(true);
} |
Auriez vous une idée comment rendre la détections des touches multimédias persistante ?
Merci d'avance.
J'ai essayé aussi ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| private void setupMediaSession() {
ComponentName mediaButtonReceiverComponentName = new ComponentName(getApplicationContext(), MediaButtonIntentReceiver.class);
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mediaButtonReceiverComponentName);
PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
MediaSession mediaSession = new MediaSession(this, "MyMediaSession");
mediaSession.setCallback(new MediaSession.Callback() {
@Override
public void onSkipToNext() {
// playNextRadio;
print("next");
}
@Override
public void onSkipToPrevious() {
// playBackRadio(true);
print("previous");
}
@Override
public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
print("bouton !!!");
return MediaButtonIntentReceiver.handleIntent(RadioService.this, mediaButtonEvent);
}
});
mediaSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS
| MediaSession.FLAG_HANDLES_MEDIA_BUTTONS);
mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent);
mediaSession.setActive(true);
} |
il fonctionne aussi très bien 30 secondes puis est complètement inopérant.
J'ai meme fait un "runable" qui rappelle toutes les 25 secondes le code mais il n'y a rien a faire il faut redémarrer l'appli pour que cà fonctionne de nouveau.