定义xml,Manifest中获取权限,获取sd卡资源,步骤同播放sd卡上音频文件
XML中使用SurfaceView
java中:
定义视频输出场所
SurfaceHolder sh;
sh = surfaceView.getHolder();
mediaPlayer.setDisplay(sh);
public class MainActivity extends AppCompatActivity {
SurfaceView surfaceView;
MediaPlayer mediaPlayer;
Button play_btn;
// 定义路径
String path;
// 定义视频输出场所
SurfaceHolder sh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surfaceView1);
play_btn = findViewById(R.id.playButton);
mediaPlayer = new MediaPlayer();
path = "/sdcard/Movies/Videos/Tianchi.mp4";
if (Build.VERSION.SDK_INT>=23){
int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
if (permission!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},0);
}
}
}
public void playMovie(View view){
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(path);
// 设定播放器音频流,Android6.0之后有变化,需判断
if (Build.VERSION.SDK_INT>=23){
AudioAttributes aa = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MOVIE)
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED).build();
mediaPlayer.setAudioAttributes(aa);
}else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
// 设定视频输出场所
sh = surfaceView.getHolder();
mediaPlayer.setDisplay(sh);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}