VideoView 播放sd卡目录下视频的路径问题
来源:互联网 发布:剑侠情缘网络单机版 编辑:程序博客网 时间:2024/06/15 05:02
以下是视频播放源代码:
package com.example.c7contentprovider;import android.Manifest;import android.content.pm.PackageManager;import android.os.Bundle;import android.os.Environment;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.MediaController;import android.widget.Toast;import android.widget.VideoView;import java.io.File;import java.io.IOException;/** * Created by 邓苏桃 on 2017/7/4. */public class VedioPlayerActivity extends AppCompatActivity implements View.OnClickListener { private VideoView videoView; MediaController mediaController; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.vedioplayer_main); videoView= (VideoView) findViewById(R.id.video_view); Button play = (Button) findViewById(R.id.vedio_play); Button pause = (Button) findViewById(R.id.vedio_pause); Button replay = (Button) findViewById(R.id.vedio_replay); play.setOnClickListener(this); pause.setOnClickListener(this); replay.setOnClickListener(this); if (ContextCompat.checkSelfPermission(VedioPlayerActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(VedioPlayerActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { initVideoPath(); } } private void initVideoPath() { File file=new File("storage/sdcard1/shiping.mp4"); if(file.exists()) {// Toast.makeText(this, "have found video", Toast.LENGTH_SHORT).show(); videoView.setVideoPath(file.getAbsolutePath());// mediaController=new MediaController(this);// videoView.setMediaController(mediaController);// mediaController.setMediaPlayer(videoView);// videoView.requestFocus();// videoView.start(); } else { Toast.makeText(this, file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED) { initVideoPath(); } else { Toast.makeText(this, "You Denied the Permission", Toast.LENGTH_SHORT).show(); finish(); } break; } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.vedio_play: if (!videoView.isPlaying()){ videoView.start(); } break; case R.id.vedio_pause: if (videoView.isPlaying()){ videoView.pause(); } break; case R.id.vedio_replay: if (videoView.isPlaying()){ videoView.resume(); } break; default: break; } } @Override protected void onDestroy() { super.onDestroy(); if (videoView!=null) { videoView.suspend(); } }}
关键问题在这里:
private void initVideoPath() { File file=new File("storage/sdcard1/shiping.mp4"); ... ...
按照《第一行代码》第八章给的代码应该写成这样:
File file=new File(Environment.getExternalStorageDirectory(),"shiping.mp4");
两者区别在于:
Environment.getExternalStorageDirectory()的实际文件路径是:storage/sdcard0/,而如果这样写则会显示找不到s**hiping.mp4**文件。网上百度才发现,sdcard0是内置存储,一般是手机U盘,sdcard1是外置存储,只手机上的sd卡。所以如果使用Environment.getExternalStorageDirectory(),应该把文件放在手机U盘上。
阅读全文
0 0
- VideoView 播放sd卡目录下视频的路径问题
- 安卓使用VideoView播放raw目录的视频和sd卡的视频
- VideoView播放SD卡上视频的例子
- android VideoView播放工程raw下的视频+全屏问题
- Android VideoView播放视频遇到的问题
- 关于VideoView播放视频问题
- VideoView播放视频的时候出现播放前透明问题
- 视频播放,VideoView的使用。
- Android使用videoview播放res/raw下的视频
- 用videoview对一个路径下的文件随机播放
- VideoView播放视频是出现黑边的问题
- VideoView中实现循环播放视频的问题
- android VideoView播放完视频一直黑屏的问题
- VideoView播放视频是出现黑边的问题
- VideoView播放SD卡上指定视频文件
- VideoView无法播放此视频 android问题
- Android--使用VideoView播放视频以及VideoView的api
- 视频播放控件VideoView的基本使用
- 人物介绍(一)
- Linux 内存,cpu,io等信息的查看
- OpenCV-形态学处理-morphologyEx
- 学习Javascript闭包(Closure)
- Echarts柱状折线图
- VideoView 播放sd卡目录下视频的路径问题
- Spring 基于注解的IOC配置
- 深度学习(六十八)darknet使用
- JavaSE阶段1_类
- python 进程 Ctrl+C退出
- <li></li>标签的属性/样式
- 局域网映射的几种方式
- 2017年一级消防工程师高薪就业
- 1030. Travel Plan (30)