Encapsulated MediaPlayer
Detailed steps for Android MediaPlayer to play video
1. Add permissions:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
2. Dynamically add permissions
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},
100);
3. Create a VideoViewActivity and use Intent to connect MainActivity and VideoViewActivity
Full code:
MainActivity layout file activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放视频"
android:onClick="playVideo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 在 Android 6.0 以上需要动态添加权限
*/
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},
100);
}
/**
* 播放视频
* @param view
*/
public void playVideo(View view) {
//跳转到VideoViewActivity完成播放视频
startActivity(new Intent(this, VideoViewActivity.class));
}
}
VideoViewActivity.java layout file activity_video_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
VideoViewActivity.java
package com.example.mediademo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.MediaController;
import android.widget.VideoView;
import java.io.File;
public class VideoViewActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_view);
//获取VideoView
VideoView videoView = findViewById(R.id.videoView);
//控制窗口(暂停/播放 快进/快退)
MediaController mediaController = new MediaController(this);
//点击next上一曲 prev下一曲
mediaController.setPrevNextListeners(this, this);
videoView.setMediaController(mediaController);
//视频的存放路径
videoView.setVideoPath(new File(getExternalFilesDir(""), "a.mp4").getAbsolutePath());
//开始播放
videoView.start();
}
//点击next上一曲 prev下一曲的监听
@Override
public void onClick(View view) {
Log.i("VideoView","====");
}
}
It is recommended to use the real device test