首先呢我们来 看一下布局文件中的代码:
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="play"/>
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="pause"/>
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="replay"/>
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Choice"/>
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
这里面也没啥特别的,就包含了四个按钮和一个播放视频的界面,按钮分别用来控制视频的播放,暂停,重新开始,和选择文件
代码里面写的比较清楚了
然后我们来看一下主函数的代码:
package com.example.pc_ly.playvideotest;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.os.EnvironmentCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.VideoView;
import java.io.File;
public class MainActivityextends AppCompatActivityimplements View.OnClickListener{
private VideoViewvideoView;
private static final int FILE_SELECT_CODE=1;
private static final StringTAG="VideoActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView=(VideoView)findViewById(R.id.video_view);
Button play=(Button)findViewById(R.id.play);
Button pause=(Button)findViewById(R.id.pause);
Button replay=(Button)findViewById(R.id.replay);
Button choice=(Button)findViewById(R.id.choice) ;
choice.setOnClickListener(this);
play.setOnClickListener(this);
pause.setOnClickListener(this);
replay.setOnClickListener(this);
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}
else {
inintVideoPath();
}
}
private void inintVideoPath(){
File file=new File(Environment.getExternalStorageDirectory(),"movie.mp4");//打开软件直接播放的2视频名字
videoView.setVideoPath(file.getPath());//指定视频文件的路径
}
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
switch (requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
inintVideoPath();
}
else {
Toast.makeText(this,"拒绝权限将无法访问程序",Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
}
}
public void onClick(View v){
switch (v.getId()){
case R.id.play:
if(!videoView.isPlaying()){
videoView.start();
}
break;
case R.id.pause:
if(videoView.isPlaying()){
videoView.pause();
}
break;
case R.id.replay:
if(videoView.isPlaying()){
videoView.resume();//重新播放
}
break;
case R.id.choice:
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");//设置类型,这是任意类型
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent,1);
}
}
public void onDestroy(){
super.onDestroy();
if(videoView!=null){
videoView.suspend();
}
}
public void onActivityResult(int requestCode,int resultCode,Intent data){
if(resultCode== Activity.RESULT_OK){
Uri uri=data.getData();
videoView.setVideoURI(uri);
super.onActivityResult(requestCode, resultCode, data);
return;
}
if (requestCode ==FILE_SELECT_CODE) {
Uri uri = data.getData();
Log.i(TAG,"------->" + uri.getPath());
}
super.onActivityResult(requestCode, resultCode, data);
}
//public void choseFile(){
/// Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
// intent.setType("*/*");
// intent.addCategory(Intent.CATEGORY_OPENABLE);
// try {
// startActivityForResult(Intent.createChooser(intent, "选择文件"), FILE_SELECT_CODE);
// } catch (android.content.ActivityNotFoundException ex) {
// Toast.makeText(this, "亲,木有文件管理器啊-_-!!", Toast.LENGTH_SHORT).show();
// }
// }
}
这里面的注释比较详细,我就不再啰嗦了,刚打开软件点击播放会播放sd卡根目录下名字为movie.MP4的文件,你也可以自己设置,或者干脆不要,然后选择文件之后,点击播放就会播放你选择的文件啦,效果如下图:
最后需要注意的一个问题是要记得授权哦,如下图,在AndroidManifest加入这一行代码即可:
可能android系统比较老的话会出现一些问题,目前大部分的机型都是没问题的,当然要想播放其他类型的文件也是可以滴,只是代码需要做一些改变,有兴趣的童鞋可以去试一试啊,有疑问的也可以在下方留言哦!
其他博客的链接:
Github个人网站 知乎
欢迎各位访问哦,这次就到这里啦!