在我的 TitleScreen Activity 中,我有...
@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 次,使我想播放的声音有延迟的回声。我检查了日志,以及我的“在 onTouchEvent 中!”消息被记录了 3 次。
此 Activity 只是标题屏幕的静态图像,其想法是您点击它以开始下一个 Activity,当您这样做时,应播放指定的声音。
对于我的特殊问题,我能够通过放置一个全局级别的 int 变量来解决它:
private static int playerInstances = 0;
然后用以下代码包装我的 MediaPlayer 行:
if (playerInstances == 0)
{
MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.critical1);
myplayer.start();
playerInstances++;
}
这确保该代码只执行一次。所以我的问题解决了。我只是想知道为什么我一次点击 3 次 onTouchEvent。
最佳答案
您实际上可以对 onTouchEvent
执行的操作(比使用静态变量更好)是:
@Override
public boolean onTouchEvent(MotionEvent event) {
final int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN) {
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);
}
关于android - Activity 的 onTouchEvent() 触发 3 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884969/