2012-03-15 85 views
0

我希望使用服务而不是活动来实现GestureDetector。该代码适用于活动,但不适用于服务。在Service我不能@OverrideonTouchEvent(MotionEvent e)方法 - 这是问题的原因?使用服务的手势检测器

public class GestureService extends Service implements OnGestureListener { 

private GestureDetector gestureScanner; 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public void onCreate() { 
    super.onCreate();  
    Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_SHORT).show(); 
    gestureScanner = new GestureDetector(this); 
} 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Toast.makeText(getBaseContext(),"onStartCommand", Toast.LENGTH_SHORT).show(); 
    return START_STICKY; 

} 

public boolean onTouchEvent(MotionEvent me) { 
    return gestureScanner.onTouchEvent(me); 
} 

@Override 
public boolean onDown(MotionEvent e) { 
    // TODO Auto-generated method stub 
    Toast.makeText(getBaseContext(),"onDown", Toast.LENGTH_SHORT).show(); 
    return false; 
} 
@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public void onLongPress(MotionEvent e) { 
    // TODO Auto-generated method stub 

} 
@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
     float distanceY) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public void onShowPress(MotionEvent e) { 
    // TODO Auto-generated method stub 

} 
@Override 
public boolean onSingleTapUp(MotionEvent e) { 
    Toast.makeText(getBaseContext(),"onSingleTapUp", Toast.LENGTH_SHORT).show(); 
    // TODO Auto-generated method stub 
    return false; 
} 

}

我使用startService(new Intent(this,GestureService.class));

回答

0

我猜你想成为一个服务,这样你可以用它为所有应用程序的活动类开始服务。但从阅读this article来看,它确实不是它的工作方式:手势是特定于应用程序的。

+0

好的。如果我设法调用'onTouchEvent(MotionEvent event)',除了获取事件的x和y坐标,还可以获得哪些其他信息?即行动。我试过'event.getAction()== MotionEvent.ACTION_DOWN',但它似乎不会返回true当我触摸屏幕 – star 2012-03-15 13:41:10