- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但如果使用非静态方法MediaPlayer.setDataSource(String),则无法正常播放。发生的是,当我调用MediaPlayer.prepare()时,我收到了一个同步异常:prepare exceptionjava.io.IOException: Prepare failed.: status=0x1
这是我的代码(省略了日志记录):
String filename = "android.resource://" + this.getPackageName() + "/raw/test0";
mp = new MediaPlayer();
try { mp.setDataSource(filename); } catch (Exception e) {}
try { mp.prepare(); } catch (Exception e) {}
mp.start();
最佳答案
替代解决方案1:使用Resources.getIdentifier()
为什么不使用getResources()。getIdentifier()获取资源ID并照常使用静态MediaPlayer.create()?
public int getIdentifier (String name, String defType, String defPackage)
MediaPlayer mp;
//String filename = "android.resource://" + this.getPackageName() + "/raw/test0";
mp=MediaPlayer.create(getApplicationContext(), getResources().getIdentifier("test0","raw",getPackageName()));
mp.start();
String filename = "android.resource://" + this.getPackageName() + "/raw/test0";
mp = new MediaPlayer();
try { mp.setDataSource(this,Uri.parse(filename)); } catch (Exception e) {}
try { mp.prepare(); } catch (Exception e) {}
mp.start();
public void setDataSource(String path)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
setDataSource(path, null, null);
}
{
final Uri uri = Uri.parse(path);
final String scheme = uri.getScheme();
if ("file".equals(scheme)) {
path = uri.getPath();
} else if (scheme != null) {
// handle non-file sources
nativeSetDataSource(
MediaHTTPService.createHttpServiceBinderIfNecessary(path),
path,
keys,
values);
return;
}
final File file = new File(path);
if (file.exists()) {
FileInputStream is = new FileInputStream(file);
FileDescriptor fd = is.getFD();
setDataSource(fd);
is.close();
} else {
throw new IOException("setDataSource failed.");
}
}
Prepare failed.: status=0x1
AssetFileDescriptor fd = null;
try {
ContentResolver resolver = context.getContentResolver();
fd = resolver.openAssetFileDescriptor(uri, "r");
// :
// :
// :
if (fd.getDeclaredLength() < 0) {
setDataSource(fd.getFileDescriptor());
} else {
setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getDeclaredLength());
}
import android.media.MediaPlayer;
player = new MediaPlayer(); //26
player.setDataSource(fileName); //27
player.prepare(); //28
private MediaPlayer player; //218
don't know exactly how the mediaPlayer works but everything in res/raw or bin/data gets copied to /sdcard/cc.openframeworks.packagename
try{
Log.d("RESURI", this.getClass().getClassLoader().getResource("res/raw/test0").toURI().toString());
}
catch(Exception e) {
}
jar:file:/data/app/<packagename>/<apkname>.apk!/res/raw/test0
关于java - MediaPlayer.setDataSource(String)不适用于本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086417/
我尝试使用 Surface View 创建媒体播放器。当我尝试为媒体播放器设置数据源时,出现了 setDataSource 失败异常。如何解决? 代码: @Override public void s
JSTL <sql:setDataSource> 标签用来在 JSP 页面中配置数据源,并将其存储在某作用域的变量中。 语法 JSP <sql:setDataSource>
我已经设法用音频文件填充我的 ListView,但是当单击 ListView 中的项目时没有任何反应,我收到异常“setDataSource failed”。 public class songsFr
我对 MediaMetadataRetriever setdatasource 方法有疑问。我创建了一个简单的项目。 main.xml 只有一个 TextView ,它应该显示 music.mp3 的
我在使用 MediaMetadataRetriever 检索 mp3 文件的艺术家和标题时收到错误(setDataSource 失败 0x8000000),但我不明白为什么。在我的模拟器上运行时,它运
我正在尝试使用 Android MediaMetadataRetriever 获取 mp4 格式的录制视频的长度 - 但出现异常: 07-13 13:54:32.686: E/AndroidRunti
阅读“Media Playback”和“MediaPlayer”android 文档后,我仍然感到困惑,需要有关 setDataSource 的有经验的建议重载方法。 我在项目的 Service 组件
假设我有一个文件的完整路径。将该文件加载到 MediaPlayer 中的更好方法是什么? String filePath = "somepath/somefile.mp3"; mediaPlayer.
我有一个 UIViewController其中包含此属性: @property (weak, nonatomic) IBOutlet UITableView *customerTableView; 在
我是 android 编程的初学者,我想编写 mp3 应用程序以从 URL 调用一些 mp3 文件,所以当我在 android 开发人员中显示“媒体播放器”时,我将 URL 放在 setDataSou
我正在开发一个使用 mediaMetadataRetriever.setDataSource 抓取视频帧的应用程序。但是,当我设置视频路径时,它给了我一个非法参数异常并崩溃。我是 java 和 And
我正在尝试使用 MediaExtract 提取 avi 文件的轨道 0(视频轨道)并使用 MediaCodec 编码为 h264 格式。这是我配置 mediaCodec 的方式 public Medi
我收到以下错误 java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA 我想知道这个状态是什么。我正在使用函数 Me
我正在尝试使用此类获取远程视频的大小,如果视频是远程的,我将收到 IllegalArgumentException。 视频是存储在一台服务器上的mp4... 如果我用 mediaplayer 播放视频
我正在尝试使用 NSarray 使用 NSTableView 创建一个简单的菜单。当我将数据源设置为我创建的类时,出现 EXC_BAD_ACCESS 错误。奇怪的是,它在 macruby 中有效吗?实
我在 VS 2010 sap crystalreports 中遇到问题,使用 c# 制作 Windows 应用程序。 我在使用以下代码时遇到以下错误: CrystalReport1 cr1 = ne
这段代码曾经有效。然后,也许我在某个地方改变了一些东西(或者如果我对 Android 的了解是正确的,则更新在媒体播放器中引入了一个错误)。它停止在 一些 设备上运行!尤其是我的 Nexus S (2
如果使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但如果使用非静态方法MediaPlayer.setDataSource(String),则无法正常播
我是 Android 开发新手。我正在尝试根据位置选择歌曲时播放歌曲。它总是崩溃并且有多个错误。我真的不明白我做错了什么。可能是愚蠢的错误,请帮助。 public class BackgroundAu
这个问题很奇怪。问题是,每当我尝试使用时间戳字符串命名文件时,setDataSource 方法都会失败并给出 IOException,但如果我给出诸如包含字母表(例如“Hello.m4a”)的名称,则
我是一名优秀的程序员,十分优秀!