0

我已经搜索了这些主题,但我没有找到任何帮助。我有这个问题。当我使用类似 MediaPlayer 的东西时。

//This one is ok
mp.create(MainActivity.this,R.raw.something);
mp.start();
//This one drives me crazy
String a="R.raw.something"
Uri uriss=Uri.parse(a);
mp.create(MainActivity.this,uriss);
mp.start();

它让我出错(1,-2147483648)这是 MediaPlayer 错误的错误,这不是我的错误 媒体文件错误,这不是我的错误 FilePath 错误,这可能是我的错误,但我不明白为什么,我该如何解决这个

4

4 回答 4

1

该类R.java是自动生成的,并包含其他内部类,这些内部类代表与您的应用程序一起打包的不同资源类型,并且每个内部类都包含static final int代表资源的字段。

举一个基本的例子。/res/values/strings.xml我项目中的文件有一个String“ MyApp app_name”。在我的R.java课堂上,有一个内部类如下......

public static final class string {

    // Various resource identifiers

    public static final int app_name=0x7f0a0038;

}

换句话说,R.string.app_name它实际上不是代表“MyApp”的,它是一个资源标识符,它允许我的代码在运行时String找到它。String

尝试做String a = "R.raw.something";的基本上是尝试将 an 分配int给 aString但用 "" 包围R.raw.something将不起作用,因为"R.raw.something"它实际上作为资源标识符毫无意义。

之所以mp.create(MainActivity.this,R.raw.something);有效,是因为该create(...)方法将 anint作为其第二个参数,然后将其用作资源标识符来查找实际的原始资源。

于 2013-03-07T23:59:19.370 回答
0

在您的示例中,方法的String参数Uri.parse应该是符合 RFC 2396 的编码 URI。请参考http://developer.android.com/reference/android/net/Uri.html#parse(java.lang.String)。报告的错误对应于0x80000000未定义的错误。

于 2013-03-07T23:54:31.700 回答
0

利用:

String path1 = "android.resource://[your package name]/[res type]/[res id]"
Uri uri1 = Uri.parse("android.resource://com.music.sample/raw/myMusic");

或者

String path2 = "android.resource://[your package name]"
Uri uri2 = Uri.parse("android.resource://com.music.sample/" + R.raw.myMusic);
于 2013-03-07T23:51:19.400 回答
-2

“R.raw.something”对我来说看起来不是一个有效的 URI。你可能想要

String a = R.raw.something;

并不是

String a = "R.raw.something";
于 2013-03-07T23:40:05.067 回答