2017-03-27 68 views
-1

我问一个问题前面play video in new activity的Android - MediaPlayer的(打开失败:ENOENT(没有这样的文件或目录)

(Button) findViewById(R.id.pickVid);点击它调用PICK_VIDEO_REQUEST,那么当视频在选定新的活动应该我要的是打开并播放视频

,帮助我说,我应该使用的this.mPlayer.setDataSource(mStringFilePath);代替FileInputStream

问题的家伙:

我收到一个错误,说setDataSource failed.: status=0x80000000黑屏。

MainActivity

public class MainActivity extends AppCompatActivity { 

Uri mMediaUri; 
String vidFile; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button pickVid = (Button) findViewById(R.id.pickVid); 

    //choose the video 
    pickVid.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent chooseVideo = new Intent(Intent.ACTION_GET_CONTENT); 
      chooseVideo.setType("video/*"); 
      startActivityForResult(chooseVideo, PICK_VIDEO_REQUEST); 


     } 
    }); 


} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PICK_VIDEO_REQUEST) { 
     if (resultCode == RESULT_OK) { 
      mMediaUri = data.getData(); 
      vidFile = mMediaUri.toString(); 
      Intent playVid = new Intent(MainActivity.this, PlayVideoAct.class); 
      playVid.putExtra("vidFile", vidFile); 


      startActivity(playVid); 
     } 
    } 

} 

PlayVideoAct

String mStringFilePath; 

    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_playvideo); 

    mStringFilePath = getIntent().getStringExtra("vidFile"); 

    } 

    public void surfaceCreated(SurfaceHolder holder) { 

    if (this.mPlayer == null) { 
     this.mPlayer = new MediaPlayer(); 
    } else { 
     this.mPlayer.reset(); 
     mPlayer.start(); 
    } 
    try { 
     this.mMediaPlayer.setDataSource(mStringFilePath); 
     this.mPlayer.setDisplay(this.mSurfaceHolder); 
     this.mPlayer.prepare(); 
     this.mPlayer.start(); 
     this.mPlayer.pause(); 
     Play(); 

    } catch (Exception e) { 
     LogUtil.e(e, "Error in PlayVideoAct.surfaceCreate(SurfaceHolder)"); 
    } 
} 

private void Play() { 

mMediaPlayer.start(); 
if (this.mMediaPlayer.isPlaying()) { 
    this.mMediaPlayer.pause(); 
    return; 
} 
if (this.isStop) { 
    this.mMediaPlayer.seekTo(this.leftPosition); 
} 
this.mImageViewButtonControls.setImageResource(R.drawable.pause); 

}

+0

*'无效MediaPlayer.setDataSource(字符串路径)' - 设置数据源(文件路径或http/RTSP URL)使用* ... **为什么你认为'Intent.ACTION_GET_CONTENT'返回HTTP/RTSP或文件路径?** – Selvin

+0

@Selvin不是吗?我烤'mStringFilePath'和它返回'内容://媒体/外部/视频/媒体/ 28638' – Brooks

回答

0

检查视频路径,如果它是正确的,那么检查,如果你有一个像所有必要的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

如果是的,然后根据您的Android版本,您可能需要进入设置 - >应用程序 - >您的应用程序 - >权限和手动切换这些权限。

+0

我已经添加的权限 – Brooks

+0

在这种情况下,请尝试硬编码字符串与路径,以检查它是否是正确的。例如。其设置为/sdcard/yourFile.mp4 – LLL

相关问题