私はいくつかの音を再生するAndroidアプリを開発しています。そのために、MediaPlayerのオブジェクトを作成しています。以下はコードです:
mp = MediaPlayer.create(this, R.raw.testSound);
ここで、mpはAndroid 2.3.3(APIレベル10)ではnullです。他のバージョンのAndroid(2.1、2.2など)で試してみましたが、正常に動作します。ただし、Android 2.3.3(APIレベル10)では、MediaPlayer.create()呼び出しはnullを返します。
サウンドファイル(testSound.wav)はwavファイルです。wavファイルを解析して、破損していないかどうかを確認してみました。それはちょうどいいようです。また、WindowsMediaPlayerを使用してこのサウンドファイルを再生することもできます。
これがtestSound.wavファイルです:testSound.wav 以下はコードの詳細です:
public MediaPlayer mp;
// OnCreate() funciton
mp = MediaPlayer.create(this, R.raw.testSound);
if(mp == null) // mp is null for Android 2.3.3 on real device and on AVD both
{
Toast msg = Toast.makeText(getApplicationContext(), "Could not play sound",
Toast.LENGTH_LONG);
msg.show();
}
//SetMediaFileToPlay() is called on Click event of button
void SetMediaFileToPlay()
{
AssetFileDescriptor afd;
Resources res = getResources();
Log.d("In SetMediaFileToPlay %s", g_strFocusedImage.toString());
switch (g_strFocusedImage)
{
case RESID_ALPHA1:
afd = res.openRawResourceFd(R.raw.ik);
if(mp != null)
{
mp.reset();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
afd.getLength());
}
break;
......... //other cases
}
if(mp != null)
{
mp.prepare();
mp.start();
}
}
助けてください。ありがとうございました。