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 : 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);
    }
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 : 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);
    }
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.