我想要媒體控件,例如我在我的應用程序中播放的流式音頻的播放/暫停。我正在使用MediaPlayer傳輸和播放音頻。MediaController與MediaPlayer
有人可以提供關於如何將MediaController與MediaPlayer一起使用的代碼片段?
由於 克里斯
我想要媒體控件,例如我在我的應用程序中播放的流式音頻的播放/暫停。我正在使用MediaPlayer傳輸和播放音頻。MediaController與MediaPlayer
有人可以提供關於如何將MediaController與MediaPlayer一起使用的代碼片段?
由於 克里斯
正如容易從here萃取此代碼。他們使用的,而不是媒體播放,這樣可以節省的幾行代碼VideoView:
佈局:
<?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>
和代碼:
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();
}
}
這就是全部。只需將mp4 video link
替換爲流媒體視頻網址即可。
這裏是不使用VideoView但MediaPlayer的和MediaController來播放音頻的例子:
How can I show a MediaController while playing audio in Android?
這是相當簡單,在媒體播放器添加媒體控制器。使您的活動實施MediaPlayerControl並添加未實現的方法。代碼如下:
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;
}
似乎這是專門針對視頻,而問題是關於音頻,將編輯答案以適應。 – 2013-09-11 18:31:53
說真的,爲什麼有很多視頻觀看的答案。這個問題從來沒有提到任何有關視頻 – grant 2017-06-08 20:33:57
使用VideoView音頻代碼??? – Chris 2010-06-02 21:54:42
我可以用它來流式處理rtsp視頻嗎? – vrunoa 2013-05-11 05:51:07