...">
美文网首页
android实现本地视频的播放,类似于一个小型的MP4,可以选

android实现本地视频的播放,类似于一个小型的MP4,可以选

作者: Cholechow | 来源:发表于2018-12-08 16:49 被阅读0次

    首先呢我们来 看一下布局文件中的代码:

    <?xml version="1.0" encoding="utf-8"?>

        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系统比较老的话会出现一些问题,目前大部分的机型都是没问题的,当然要想播放其他类型的文件也是可以滴,只是代码需要做一些改变,有兴趣的童鞋可以去试一试啊,有疑问的也可以在下方留言哦!

    邮箱:2321591758@qq.com

    其他博客的链接:

    Github个人网站 知乎 简书

    欢迎各位访问哦,这次就到这里啦!

    相关文章

      网友评论

          本文标题:android实现本地视频的播放,类似于一个小型的MP4,可以选

          本文链接:https://www.haomeiwen.com/subject/whwqhqtx.html