【发布时间】:2012-08-09 13:50:18
【问题描述】:
在我的 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 次,使我想播放的声音有延迟回声。我检查了日志,以及我的“in onTouchEvent!”消息被记录了 3 次。
这个活动只是标题屏幕的静态图像,想法是你点击它开始下一个活动,当你这样做时,指定的声音应该播放。
对于我的特定问题,我可以通过放置一个全局级别的 int 变量来解决它:
private static int playerInstances = 0;
然后将我的 MediaPlayer 行包装为:
if (playerInstances == 0)
{
MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.critical1);
myplayer.start();
playerInstances++;
}
这保证了该代码只执行一次。所以我的问题解决了。我只是想知道为什么我一键获得了 3 次 onTouchEvent。
【问题讨论】:
-
我认为这是因为所有三个触摸事件(ACTION_DOWN、ACTION_UP、ACTION_MOVE)都被调用了。看看这个链接stackoverflow.com/questions/11777459/…
-
哈,太棒了!你应该把它作为答案,这样我就可以给你信用。
-
嗯......很高兴它有帮助......你可以投票赞成;)
标签: android android-activity android-mediaplayer touch-event