无法播放位于assets文件夹中的mp4文件

时间:2012-02-03 05:58:12

标签: android android-intent

很多人在播放资源文件夹中的媒体文件时遇到问题。我看了所有的线程,但没有一个是决定性的。虽然他们都说应该可以播放媒体文件,但没有一个能提供完整的解决方案。

这就是我想要尝试的。

我在资源文件夹中有一个mp4文件。

我希望启动GALLERY或任何其他可以播放mp4文件的意图。我不希望在我的应用程序中有视频和/或媒体播放器对象。

这可能吗?

有些线程建议将媒体文件从assets文件夹移动到res / raw文件夹中。我没试过就试过了。

首先,这是我对assets文件夹中的媒体文件所做的。媒体文件名为sample.mp4

String movieUrl = "file:///android_asset/sample.mp4";
// i even tried: String movieUrl = "file:///android_asset/sample";
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(movieUrl), "video/*");
startActivity(intent);

其次,我将sample.mp4移动到res / raw文件夹 -

String movieUrl = "android.resource://" + getPackageName() + "/raw/" + "sample.mp4";
// i even tried: String movieUrl = "android.resource://" + getPackageName() + "/raw/" + "sample";
// i even tried: String movieUrl = "android.resource://" + getPackageName() + R.raw.sample;
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(movieUrl), "video/*");
startActivity(intent);

两种方法都不奏效。 在第一种情况下,我看到启动GALLERY意图的选项。但是只要从选项列表中选择一个玩家,我就会看到错误

E/MediaPlayer(1642): Error (1,-2147483648)

在第二种情况下,我立即看到以下错误:     android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.intent.action.VIEW dat = android.resource://com.postureco.posturescreen/raw/2130968576 typ = video / *}

令人惊讶的是,如果我将sample.mp4放入SD卡并尝试以下代码,一切都运行良好 - 我可以启动图库应用程序并让文件在那里播放。

File file = new File("/sdcard/sample.mp4")
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "video/*");
startActivity(intent);

我的清单权限:

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="false" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:required="false" />

任何投入都受到高度赞赏。 感谢。

0 个答案:

没有答案
相关问题