2012-03-15 93 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