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:
Auriez vous une idée comment rendre la détections des touches multimédias persistante ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Merci d'avance.
J'ai essayé aussi ce code :
il fonctionne aussi très bien 30 secondes puis est complètement inopérant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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.
Partager