Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: ¿Cómo detener los medios (mp3) en el juego cuando vienen milisegundos específicos?

Tengo un archivo mp3 y quiero jugar una palabra específica en ella. Tengo una hora de inicio ( 6889 ms ) y una hora de finalización ( 7254 ms ).

Tengo estos códigos:

 package com.example.playword; import java.io.IOException; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.widget.TextView; public class PlayWord extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView tv = new TextView(this); tv.setText("Playing..."); setContentView(tv); final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.nicholas); try { mPlayer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mPlayer.seekTo(6889); //this is the start time mPlayer.start(); //how can I end it at 7254 ms? } } 

  • Compruebe si la reproducción de música en android media player API
  • Problemas de almacenamiento intermedio con android.media.MediaPlayer
  • Ayuda de Android: ¿Cómo abrir una URL de archivo de vídeo remota para reproducir en MediaPlayer sin tener que abrir una ventana del navegador?
  • Android: ¿Cómo crear un reproductor de vídeo?
  • ¿Códigos de error de Android MediaPlayer?
  • Android Stop Música de fondo
  • MediaPlayer error: pausa llamada en el estado 64
  • Reproductor de medios Android Reiniciar audio después de llamar a Stop
  • 2 Solutions collect form web for “Android: ¿Cómo detener los medios (mp3) en el juego cuando vienen milisegundos específicos?”

    La mejor aproximación es usar un manejador para programar la detención de la reproducción. Inicie el reproductor y luego utilice el Handler's postDelayed para programar la ejecución de un Runnable que detendrá al reproductor. También debe iniciar el reproductor sólo después de completar la búsqueda inicial. Algo como esto:

     public class PlayWord extends Activity implements MediaPlayer.OnSeekCompleteListener { Handler mHandler; MediaPlayer mPlayer; int mStartTime = 6889; int mEndTime = 7254; final Runnable mStopAction = new Runnable() { @Override public void run() { mPlayer.stop(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TextView tv = new TextView(this); tv.setText("Playing..."); setContentView(tv); mHandler = new Handler(); mPlayer = MediaPlayer.create(this, R.raw.nicholas); mPlayer.setOnSeekCompleteListener(this); mPlayer.seekTo(mStartTime); } @Override public void onDestroy() { mPlayer.release(); } @Override public void onSeekComplete (MediaPlayer mp) { mPlayer.start(); mHandler.postDelayed(mStopAction, mEndTime - mStartTime); } } 

    Tenga en cuenta también que el método MediaPlayer.create que está utilizando devuelve un MediaPlayer que ya ha sido preparado y prepare no debe volver a llamarse como lo está haciendo en su código.en la pantalla. También he añadido una llamada a release() cuando se cierra la actividad.

    Además, si desea actualizar la interfaz de usuario cuando se completa la búsqueda, tenga en cuenta que este método normalmente se llama desde un subproceso no UI. Tendrá que usar el controlador para publicar cualquier acción relacionada con la interfaz de usuario.

     In Oncreate Method ,use the below 4 lines code: MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.nicholas); mPlayer.start(); mPlayer.seekTo(startTime); updatePlayerPostion(); private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); updatePlayerPostion(); } }; updatePlayerPostion() { handler.removeCallbacks(r); if(player.getCurrentPosition==7254) player.stop(); else handler.postDelayed(r, 1); //1 millisecond } Runnable r=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub updatePlayerPostion() } }; 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.