Android开发中用VideoView运行时出现该视频无法播放

package com.example.myvideo;

import java.io.File;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.MediaController;
import android.widget.MediaController.MediaPlayerControl;
import android.widget.VideoView;

public class MainActivity extends Activity implements MediaPlayerControl{

private VideoView videoView;//播放视频的一个控件
private MediaController controller;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
controller = new MediaController(this);
videoView = (VideoView) this.findViewById(R.id.videoView1);

    videoView.setMediaController(controller);
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

File file = Environment.getExternalStorageDirectory();//sdcard卡的根目录
File videoFile = new File(file,"c.3gp");
Uri uri = Uri.fromFile(videoFile);
videoView.setVideoURI(uri);
}

}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean canPause() {
// TODO Auto-generated method stub
return videoView.canPause();
}

@Override
public boolean canSeekBackward() {
// TODO Auto-generated method stub
return videoView.canSeekBackward();
}

@Override
public boolean canSeekForward() {
// TODO Auto-generated method stub
return videoView.canSeekForward();
}

@Override
public int getAudioSessionId() {
// TODO Auto-generated method stub
return 0;
}

@Override
public int getBufferPercentage() {
// TODO Auto-generated method stub
return 0;
}

@Override
public int getCurrentPosition() {
// TODO Auto-generated method stub
return 0;
}

@Override
public int getDuration() {
// TODO Auto-generated method stub
return videoView.getDuration();
}

@Override
public boolean isPlaying() {
// TODO Auto-generated method stub
return videoView.isPlaying();
}

@Override
public void pause() {
// TODO Auto-generated method stub
if (videoView.isPlaying()) {
videoView.pause();
}
}

@Override
public void seekTo(int arg0) {
// TODO Auto-generated method stub
videoView.seekTo(arg0);
}

@Override
public void start() {
// TODO Auto-generated method stub
videoView.start();
}
}

本人用3gp和mp4均做过测试
希望哪位大牛指点迷津
在此谢过了

2个回答

先确定用什么设备测的再考虑路径是否正确

tengfei623
腾飞的鲫鱼 意思是说代码问题不大 就是路径和设备的问题?
接近 5 年之前 回复

你那个视频文件的分辨率是多少的,然后测试时用的手机分辨率是多少,可能是视频的分辨率大于手机分辨率的问题,说错请见谅!如果只有声音,没画面,可能就是其它问题了,比如布局问题。

tengfei623
腾飞的鲫鱼 回复茕夜: 用的M3没报错 怎么才知道有误权限,我看了你说的哪个的
接近 5 年之前 回复
u012561176
茕夜 回复杨沐汐: 你是用模拟器播放的么,有可能是你sd卡没有权限?打开File Explorer视图看下sd卡是否有权限?在看下Log有没有报什么错误信息?
接近 5 年之前 回复
tengfei623
腾飞的鲫鱼 不是分辨率的问题
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐