Nasıl bir hizmet dokunma hareketleri için/olayları dinleyebilir?
SwipePad ve Dalga Launcher gibi uygulamalar sadece bir hizmeti aracılığıyla dokunma hareketleri/olayları tespit edebiliyoruz nasıl merak ediyorum. Bu uygulamalar kendi Faaliyeti olmadığı halde dokunmatik hareketleri tespit edebiliyoruz. İnternette baktım ve nasıl böyle bir şey yaptıklarını bulamadım.
Benim asıl soru bir hizmeti düzenli bir Aktivite veya özgün Etkinlik kapsamında olmayabilir olsa bile MotionEvents alabilirsiniz gibi dokunmatik guestures/olayları dinlemek. Aslında bir üstte ne olursa olsun, bir kullanıcı belirli bir dokunmatik jest recongize ve bu jest recongized ne zaman bir şey yapacak bir uygulama oluşturmak çalışıyorum. Dokunmatik recongition bir iş parçacığı bir hizmet olarak arka planda çalışıyor olacak.
CEVAP
Bu aynı sorunu vardı ve en sonunda bu işi çözdüm! Bu yazı sayesinde: creating a system overlay (always on top) button in android. Bir kaplama (ve bu da Andoid ICS kullanabilirsiniz anlamına gelir) yerine bir uyarı penceresi kullanmanız gerekir:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
O zaman sadece bu şekilde bir GestureListener takın:
GestureDetector gestureDetector = new GestureDetector(this, new AwesomeGestureListener());
View.OnTouchListener gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
overlayView.setOnTouchListener(gestureListener);
Yay!
Nasıl dokunma olayları jQuery kullanar...
Nasıl bir hizmet Android üzerinde çalı...
Neyi nasıl algılamak için .NET Çerçeve...
Hizmet değişkenleri izlemek için Nasıl...
Sol kaydırma hareketleri için sağ kolu...