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 エラーのエラーです。これは私のエラーではありません。メディア ファイル エラーです。これは私のエラーではありません。これ

4

4 に答える 4

1

R.javaクラスは自動生成され、アプリにパッケージ化されたさまざまなリソースの種類を表す他の内部クラスが含まれ、それらの各内部クラスにはリソースを表すフィールドが含まれますstatic final int

基本的な例を挙げます。/res/values/strings.xml私のプロジェクトのファイルStringには、 app_name「MyApp」というファイルがあります。私のR.javaクラスには、次のような内部クラスがあります...

public static final class string {

    // Various resource identifiers

    public static final int app_name=0x7f0a0038;

}

つまり、R.string.app_name実際にはString「MyApp」を表す ではなく、コードがString実行時にそれを見つけられるようにするリソース識別子です。

やろうとしてString a = "R.raw.something";いるのは、基本的に anintを aに代入しようとすることですが、"" でString囲むR.raw.somethingと機能しません"R.raw.something"。リソース識別子としては実際には意味がありません。

機能する理由mp.create(MainActivity.this,R.raw.something);は、create(...)メソッドが をint2 番目のパラメーターとして取り、それをリソース識別子として使用して実際の生のリソースを見つけるためです。

于 2013-03-07T23:59:19.370 に答える
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 に答える