4426

[code]

    mMediaPlayer = MediaPlayer.create(this, Uri.parse("android.resource://" + getPackageName() + "/R.raw." + name));
    mMediaPlayer.start();
    
[/code]

上記のようにしてrawフォルダの音声ファイルを再生させようとすると、以下のようなエラーが返ってきます。

[code]

    Couldn't open file on client side, trying server side
    D/MediaPlayer﹕ create failed: java.io.IOException: Prepare failed.: status=0x1
    
[/code]

これはMediaPlayer.createの引数のUriが間違っているのでしょうか？  
原因が分からず詰まってしまっており、ぜひお力添えをいただきたいと思います。  
宜しくお願いします。


CC BY-SA 3.0
2015-01-11T10:32:42.887
4402
2015-01-12T04:23:54.723
2015-01-11T16:16:55.143
33
5210
question
android
MediaPlayerでrawフォルダの音声ファイルが再生できない


[https://stackoverflow.com/questions/12648722/how-to-access-a-video-from-the-
raw-folder-using-a-
variableの回答にあるように](https://stackoverflow.com/questions/12648722/how-to-access-
a-video-from-the-raw-folder-using-a-
variable%E3%81%AE%E5%9B%9E%E7%AD%94%E3%81%AB%E3%81%82%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB)、R.raw.hogehogeのhogehogeを自由に切り替える方法は一手間必要です。

うまく言えませんが、文字列で間接参照？のようなことはJava の仕様ではできないはず…


CC BY-SA 3.0
2015-01-11T11:24:59.953
4405
2015-01-11T11:24:59.953
2017-05-23T12:38:56.467
-1
2904
4402
answer


[MediaPlayer.create(Context context, int
resid)](http://developer.android.com/reference/android/media/MediaPlayer.html#create%28android.content.Context,%20int%29)
という他のファクトリーメソッドがあるので、そちらを使った方が手っ取り早いのではないでしょうか？

[code]

    mMediaPlayer = MediaPlayer.create(this, R.raw.voice);
    
[/code]


CC BY-SA 3.0
2015-01-11T15:21:11.307
4411
2015-01-11T15:21:11.307
7290
4402
answer


以下の方法でrawフォルダ内の音声ファイルを再生させることができました。

[code]

    int mediaResource = getResources().getIdentifier(soundFileName, "raw", getPackageName());
    mMediaPlayer = MediaPlayer.create(getApplicationContext(), mediaResource);
    
[/code]

getIdentifierメソッドの第一引数にはrawフォルダ内の再生したい音声ファイル名を指定します。（sound1.mp3を再生させたければ
"sound1" と書く）  
ちなみに以下の方法でも音声を再生することができました。

[code]

    Uri.parse("android.resource://" + getPackageName() + "/raw/" + soundFileName)
    
[/code]

また、僕の場合はAndroid端末の音量が0だったことも原因でした。音声が再生されていてもログに「start() mUri is
null」と出るので、てっきり音声が再生されてないものと思い込んでいました。  
もし上記のようにコードを書いて音声が鳴らなければ、端末の音量を確認してみるのもいいかもしれません。


CC BY-SA 3.0
2015-01-12T03:44:56.247
4426
2015-01-12T04:23:54.723
2015-01-12T04:23:54.723
5210
5210
4402
answer