android studio播放视频权限,Android Studio实现本地视频播放

Android Studio的MediaPlayer播放本地视频

关于MediaPlayer错误[open failed: EACCES (Permission denied)]

可能会有下面几个方面的错

1.权限没有添加

2. targetSdkVersion过高

下面附上一些代码

关于MediaPlayer错误[open failed: EACCES (Permission denied)]

8beb32fd2a6efc31390902a594354bd8.png

可能会有下面几个方面的错

1.权限没有添加

1)在AndroidMainifest.xml文件中添加用户权限

2)还要动态获取权限

在MainActivity中添加

private final int REQUEST_EXTERNAL_STORAGE = 1;

private String[] PERMISSIONS_STORAGE = {

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE };

public void verifyStoragePermissions(Activity activity) {

// Check if we have write permission

int permission = ActivityCompat.checkSelfPermission(activity,

Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != PackageManager.PERMISSION_GRANTED) {

// We don't have permission so prompt the user

ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,

REQUEST_EXTERNAL_STORAGE);

}

}

记得在onCreat()方法中调用

verifyStoragePermissions(this);

当然可以简单粗暴的通过配置用户信息添加存储权限

2. targetSdkVersion过高

6a12ee497431704ba102d5d6bc91cd63.png

将targetSdkVersion改为26 本来我这里是29的 太高了 导致编译的时候出错 改为26就可以了

对于此次本地视频播放器的实现 最为纠结的就是页面显示 播放器出错 看了许多篇博客 都是权限的问题 我在最初的时候就添加了权限所以很可能不是这个问题 又尝试用其他方法实现播放 发现还是MediaPlayer好写一些可以用监听实现

还有一些博客说content provider这个没有试过 我试了调试的方法 发现能定位到uri的位置 还有最重要的一点 遇到问题 要自己分析 试着调试一下 找到问题的所在

9f2105d3e5c5fc6d3aacef1e8104d6ac.png

本来以为实现不了了 又翻到一篇很有用的博客 改了targetSdkVersion就实现了本地视频的播放

下面附上一些代码

public class SystemVedioPlayer extends AppCompatActivity {

private VideoView videoView;

private Uri uri;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_system_vedio_player);

videoView=findViewById(R.id.videoview);

uri=getIntent().getData();

System.out.println("uri:"+uri);

videoView.setVideoURI(uri);

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

videoView.start();

}

});

videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

@Override

public boolean onError(MediaPlayer mp, int what, int extra) {

Toast.makeText(SystemVedioPlayer.this,"播放出错了",Toast.LENGTH_SHORT).show();

System.out.println("what:"+what+"\n extra: "+extra);

return true;

}

});

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

Toast.makeText(SystemVedioPlayer.this,"播放已完成 ",Toast.LENGTH_SHORT).show();

finish();

}

});

//设置控制面板

videoView.setMediaController(new MediaController(this));

}

}

//设置视频点击事件

vedioPager.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

MediaItem mediaItem=mediaItems.get(position);

//使用系统自带播放软件

// Intent intent=new Intent();

// intent.setDataAndType(Uri.parse(mediaItem.getData()),“video/");

// mContext.startActivity(intent);

Intent intent=new Intent(mContext, SystemVedioPlayer.class);

intent.setDataAndType(Uri.parse(mediaItem.getData()),"video/”);

System.out.println("Uri.parse(mediaItem.getData(): "+Uri.parse(mediaItem.getData()));

mContext.startActivity(intent);

参考网址:

[1]: https://cloud.tencent.com/developer/article/1381003

[2]: https://blog.csdn.net/twc18638942853/article/details/53218659

  • 0
    点赞
  • 4
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值