例外をキャッチするようにサウンド クラスを書き直して、サウンドが呼び出されたときにアプリケーションがクラッシュしないようにしました。サウンドファイルが再生されないという問題はまだ残っています。エミュレーター上で実行および再生されます。
HTC VIVID でテストするまでエラーはありません。私の電話は問題ではないと思います。
サウンド ファイルのファイル構造は Resources>raw>soundfiles.ogg です。
これが私のサウンドクラスに使用しているコードです。
public class Sound extends Activity
{
MediaPlayer mp;
Context context;
public Sound (Context res)
{
context=res;
}
public void playSound(int ID)
{
try {
mp = MediaPlayer.create(context, ID);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
mp = null;
}
});
} catch (Exception exception) {
}
}
}
ログキャットは次のとおりです。
E/AndroidRuntime( 981): FATAL EXCEPTION: main
E/AndroidRuntime( 981): android.content.res.Resources$NotFoundException: File r
es/raw/soundfile.ogg from drawable resource ID #0x7f040000
E/AndroidRuntime( 981): at android.content.res.Resources.openRawResource
Fd(Resources.java:1081)
E/AndroidRuntime( 981): at android.media.MediaPlayer.create(MediaPlayer.
java:762)
E/AndroidRuntime( 981): Caused by: java.io.FileNotFoundException: This file can
not be opened as a file descriptor; it is probably compressed
この圧縮の問題を解決するにはどうすればよいですか?
ここまでが設定の大まかな概要です。これが問題の一部だとは思いません。
final Context res;
Sound fx;
public GameView(Context context) //reference to activity
{
super(context);
res=context;
fx=new Sound(res);
public boolean onTouchEvent(MotionEvent event)
{
fx.playSound(R.raw.sound);