2012-03-15 3 views
0

Я хочу реализовать GestureDetector, используя сервис вместо активности. код работает на активность, но не на сервисе. В Service я не могу @Override метод onTouchEvent(MotionEvent e) - это причина проблемы?GestureDetector using Service

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

ok. если бы мне удалось вызвать вызов 'onTouchEvent (MotionEvent event)', помимо получения координаты x и y события, какую другую информацию я могу получить? то есть действие. Я попробовал 'event.getAction() == MotionEvent.ACTION_DOWN', но кажется, что он не возвращает true, когда я касаюсь экрана – star

Смежные вопросы