studio setonpreparedlistener remote mediaplayer library ejemplo control android controller media-player

android - setonpreparedlistener - MediaController con MediaPlayer



setonpreparedlistener mediaplayer android (3)

Quiero controles multimedia como reproducir / pausar para transmitir el audio que estoy reproduciendo en mi aplicación. Estoy usando MediaPlayer para transmitir y reproducir el audio.

¿Puede alguien proporcionar un fragmento de código sobre cómo usar MediaController con MediaPlayer?

Gracias chris



Es bastante simple agregar un controlador de medios en un reproductor de medios. Haga que su actividad implemente MediaPlayerControl y agregue métodos no implementados. El código es el siguiente:

Estoy utilizando código de las demostraciones de Api desde aquí http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html

public class ActivityVedioPlay extends Activity implements OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback, MediaPlayerControl { ..... private MediaPlayer mMediaPlayer; private MediaController mcontroller; private Handler handler = new Handler(); ..... @Override public boolean onTouchEvent(MotionEvent event) { /* * the MediaController will hide after 3 seconds - tap the screen to * make it appear again */ mcontroller.show(); return false; } ...... private void playVideo() { doCleanUp(); try { path = getIntent().getStringExtra("url"); if (path == "") { Toast.makeText(ActivityVedioPlay.this, "URL Not found", Toast.LENGTH_LONG).show(); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(path); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setScreenOnWhilePlaying(true); mMediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mcontroller = new MediaController(this); } catch (Exception e) { e.printStackTrace(); } } ...... public void onPrepared(MediaPlayer mediaplayer) { Log.d(TAG, "onPrepared called"); mIsVideoReadyToBePlayed = true; if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) { startVideoPlayback(); } mcontroller.setMediaPlayer(this); mcontroller.setAnchorView(findViewById(R.id.mediaplayer_surfaceview_container)); handler.post(new Runnable() { public void run() { mcontroller.setEnabled(true); mcontroller.show(); } }); } //mediacontroller implemented methods public void start() { mMediaPlayer.start(); } public void pause() { mMediaPlayer.pause(); } public int getDuration() { return mMediaPlayer.getDuration(); } public int getCurrentPosition() { return mMediaPlayer.getCurrentPosition(); } public void seekTo(int i) { mMediaPlayer.seekTo(i); } public boolean isPlaying() { return mMediaPlayer.isPlaying(); } public int getBufferPercentage() { return 0; } public boolean canPause() { return true; } public boolean canSeekBackward() { return true; } public boolean canSeekForward() { return true; }


Tan fácil como este código extraído de here . Usan VideoView en lugar de un MediaPlayer, que le ahorra algunas líneas de código:

Diseño:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:paddingLeft="2px" android:paddingRight="2px" android:paddingTop="2px" android:paddingBottom="2px" android:layout_width="fill_parent" android:orientation="vertical"> <VideoView android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/VideoView"></VideoView> </LinearLayout>

Y el código:

public class VideoPlayerController extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.video); VideoView videoView = (VideoView) findViewById(R.id.VideoView); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); // Set video link (mp4 format ) Uri video = Uri.parse("mp4 video link"); videoView.setMediaController(mediaController); videoView.setVideoURI(video); videoView.start(); } }

Eso es todo. Simplemente reemplace el mp4 video link con una url de video de transmisión.