TitleScreenアクティビティでは、...
@Override
public boolean onTouchEvent(MotionEvent event)
{
Log.d("MyActivity", "in onTouchEvent!");
MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.mysound);
myplayer.start();
startActivity(new Intent("com.example.GAME"));
return super.onTouchEvent(event);
}
これにより、画面をタップすると音が3回連続して再生され、再生したい音のエコーが遅れていました。ログと「inonTouchEvent!」を確認しました。メッセージは3回ログに記録されました。
このアクティビティはタイトル画面の静止画像であり、タップして次のアクティビティを開始するというアイデアです。そうすると、指定したサウンドが再生されます。
私の特定の問題については、グローバルレベルのint変数を配置することで解決できました。
private static int playerInstances = 0;
次に、MediaPlayerの行を次のようにラップします。
if (playerInstances == 0)
{
MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.critical1);
myplayer.start();
playerInstances++;
}
これにより、そのコードは1回だけ実行されることが保証されました。だから私の問題は解決しました。なぜワンタップでonTouchEventを3回取得したのか疑問に思っています。