如何使用视频意图从资源或原始文件夹播放视频(.mp4)?

时间:2012-06-25 12:44:18

标签: android file video android-intent mp4

如何使用视频意图从我的资源或原始文件夹播放mp4视频?

无论我尝试什么,我总是得到:

06-25 14:32:14.070: E/AndroidRuntime(3070): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=android.resource://mypackage/raw/myvideo }

我试过:

   Intent tostart = new Intent(Intent.ACTION_VIEW);

  String movieUrl = "file:///android_asset/myvideo.mp4";
  // String movieUrl = "android.resource://" + getPackageName() + "/raw/" + "myvideo.mp4";

   tostart.setDataAndType(Uri.parse(movieUrl), "video/*");
   startActivity(tostart);  

我只能找到人们使用SD卡上的视频的答案,有没有选项,所以我可以使用raw或assets文件夹?

2 个答案:

答案 0 :(得分:1)

AssetFileDescriptor afd;

  try {
         afd = getAssets().openFd("videofile/video.3gp");
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

此处 video.3gp 是文件夹--- videofile 下的文件 - >是资产文件夹

下的一个文件夹

使用媒体播放器可以这样设置

mediaPlayer = new MediaPlayer();


 if(mediaPlayer.isPlaying()){
   mediaPlayer.reset();
  }

  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  mediaPlayer.setDisplay(surfaceHolder);

  try {
      mediaPlayer.setDataSource(afd.getFileDescriptor(), afd
                .getStartOffset(), afd.getLength());

   mediaPlayer.prepare();
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalStateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  mediaPlayer.start();

答案 1 :(得分:0)

您可以使用以下方法解析原始文件夹中的视频网址:

Uri.parse("android.resource://com.testvideo/" + R.raw.video);

然后尝试: