《1》使用SurfaceView+MediaPlayer+SeekBar控件完成
01、xml的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android_playmusic.MainActivity">
<SeekBar
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/sb_main_SeekBar"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play"
android:onClick="playmusic"
/>
</LinearLayout>
activity中的文件MoviesActivity
package com.example.android_playmusic;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;
import java.io.IOException;
public class MoviesActivity extends AppCompatActivity {
private SeekBar sb_main_seekBar;
private MediaPlayer mediaPlayer;
private SurfaceView sfv_movie_surface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movies);
sb_main_seekBar = (SeekBar) findViewById(R.id.sb_main_SeekBar);
sfv_movie_surface = (SurfaceView) findViewById(R.id.sfv_movie_surface);
//给进度条设置滑动监听
sb_main_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progress = seekBar.getProgress();
//在当前位置播放
mediaPlayer.seekTo(progress);
}
});
}
public void playmusic(View view) {
final ImageButton imageButton = (ImageButton) view;
if (mediaPlayer == null) {
//01.播放内存中的音频
//mediaPlayer = MediaPlayer.create(this, R.raw.f);
//播放内存卡中文件
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(this, Uri.parse
("file://mnt/sdcard/storage/emulated/0/12.mp4"));
//准备
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
//**重点: 把捕捉到的画面放到SurfaceView中** mediaPlayer.setDisplay
(sfv_movie_surface.getHolder());
mediaPlayer.start(); imageButton.setImageResource
(android.R.drawable.ic_media_pause);
//获取音乐的总时长
int duration = mediaPlayer.getDuration();
//将进度条设置最大值为:音乐的总时长
sb_main_seekBar.setMax(duration);
//启动线程
new MyThread().start();
} else if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
imageButton.setImageResource(android.R.drawable.ic_media_play);
} else {
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
//启动线程的一个方法
class MyThread extends Thread {
@Override
public void run() {
super.run();
while (sb_main_seekBar.getProgress() <= sb_main_seekBar.getMax()) {
//获取音乐当前播放的位置
int position = mediaPlayer.getCurrentPosition();
sb_main_seekBar.setProgress(position);
}
}
}
}
《二》使用VideoView+MediaController完成播放视频
xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_mediacontrolle"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android_playmusic.MediacontrolleActivity">
<VideoView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/vv_vidao_view"
/>
</RelativeLayout>
activity中的MediacontrolleActivity文件
package com.example.android_playmusic;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class MediacontrolleActivity extends AppCompatActivity {
private VideoView vv_vidao_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mediacontrolle);
vv_vidao_view = (VideoView) findViewById(R.id.vv_vidao_view);
//设置播放的来源
vv_vidao_view.setVideoPath("file://mnt/sdcard/storage/emulated/0/12.mp4");
//实例化多媒体控制器
MediaController mediaController=new MediaController(this);
mediaController.setMediaPlayer(vv_vidao_view);
vv_vidao_view.setMediaController(mediaController);
}
}
清单文件添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
02-22
1525
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-14
08-14