【发布时间】:2012-01-05 21:16:14
【问题描述】:
有没有办法提高设备对特定应用程序的响应能力?具体来说,现在我的触摸事件肯定会触发,但它们会延迟几分之一秒。由于我的应用程序是音乐/节奏应用程序,因此任何延迟都非常糟糕。我只是想知道,如果我可以在 Manifest 中做些什么来提高响应能力。或者也许有一些建议可以让代码运行得更快?我还必须在应用程序中创建多个线程来处理多点触控,也许有一种有效的方法可以做到这一点?
最好, 阿尼姆
编辑:
public boolean onTouchEvent(final MotionEvent ev) {
if(ev.getAction()==ev.ACTION_DOWN||ev.getActionMasked()==ev.ACTION_POINTER_DOWN){
AudioManager mgr = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
PointF[] touchPoints = new PointF[ev.getPointerCount()];
for(int i = 0; i < ev.getPointerCount(); i++){
touchPoints[i] = new PointF(ev.getX(i),ev.getY(i));
}
for(final PointF point : touchPoints){
x = ev.getX(ev.getActionIndex());
y = ev.getY(ev.getActionIndex());
int ptx = (int) (x - x%widthIncrement);
int pty = (int) (y - y%heightIncrement);
playSound(pointMap.get(new Point(ptx,pty)));
}
return true;
}
return true;
}
public void playSound(int sound){
AudioManager mgr = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
database.play(sound, streamVolume, streamVolume, 1, 0, 1);
}
【问题讨论】:
-
我不明白为什么需要多个线程来处理多点触控。你能详细说明一下吗?
-
所以我的应用程序基本上是一个鼓乐器,我将屏幕分成多个区域,每个区域都有独特的声音。我想要,因为如果我同时按下三个区域,可以同时听到三个声音。我认为使用线程可以解决问题,而不是迭代地进行,并且它可以工作。也许有更好的方法?
标签: android touch screen multi-touch