2012-08-17 5 views
1

J'utilise un MediaController et MediaPlayer ensemble, pour créer un simple lecteur audio sous Android, tiré d'un exemple que j'ai trouvé ici sur ce site.Android MediaController seekbar pas rafraîchissant

Cependant, après beaucoup de recherche, je n'ai pas trouvé la solution à mon problème: la barre de progression/recherche ne s'actualise pas pendant que la musique joue. Il se met à jour automatiquement quand quelque chose est appuyé sur MediaController (Lecture/Pause, Avance, etc.).

Une solution facile pour cela que je ne reçois pas?

NOTE: Mon MediaController est déclaré dans XML, et mes méthodes MediaController.MediaPlayerControl simplement faire usage de la classe MediaPlayer.

+0

Est-SeekBar censé rafraîchir automatiquement (via les API MediaController/MediaPlayer) ou êtes-vous censé le mettre à jour en utilisant le code? –

+0

Eh bien, je voulais qu'il se rafraîchit automatiquement, car: mediaController.setMediaPlayer (mediaPlayer) est terminé. Malheureusement, il ne se met à jour (sans mon code) lorsque l'un des boutons du MediaController est pressé. – PedroN

Répondre

0

Mediaplayer fournit une méthode getCurrentPosition() que vous pouvez mettre dans un fil pour mettre à jour continuellement la barre de progression.

public int getCurrentPositionInt(){ 
     if (player != null) 
      return player.getCurrentPosition(); 
     else 
      return 0; 
    } 

Créer une Thread ou CountDownTimer pour mettre à jour en permanence la barre de recherche:

seekBar.setMax((getCurrentPositionInt()/1000)); 

OU

MediaController.MediaPlayerControl mp; 
mp.seekTo((getCurrentPositionInt()/1000)) 
+0

Merci. Triste de savoir qu'il ne se mettra pas à jour depuis le MediaPlayer attaché. Une dernière chose: comment puis-je obtenir le SeekBar de mon MediaController? – PedroN

+0

Je n'ai pas travaillé sur 'MediaController' mais la documentation indique qu'il prend soin de synchroniser les contrôles avec l'état du MediaPlayer. Je pense que vous pouvez utiliser la méthode MediaController.MediaPlayerControl.seekTo ((getCurrentPositionInt()/1000)) pour le faire. plutôt obtenir seekBar. – Sayyam

+0

Oui, il se synchronise bien, mais ce qui est étrange, c'est qu'il ne rafraîchit que lorsque quelque chose est pressé. Et seekTo ne fonctionnera pas, déjà essayé :( – PedroN