2010-11-28 4 views
3

Ich habe ein Live Wallpaper, das verschiedene Bildschirmberührungen verwendet, um bestimmte Ereignisse auszulösen. Im Moment funktioniert es, aber ich scheine alle Berührungsereignisse zu bekommen. Wenn der Benutzer beispielsweise ein Symbol berührt, um eine App zu starten, scheint auch ich dieses Ereignis zu erhalten.Android Live Wallpaper Touch Ereignishierarchie

Ist es möglich zu bestimmen, ob der Benutzer den Hintergrundbildschirm berührt hat (d. H. Die Lücken zwischen den Symbolen), so dass ich nur meine Aktionen zu dieser Zeit ausführen und die anderen ignorieren kann.

Wenn ich das nicht kann (und möglicherweise irrtümlicherweise angenommen habe, dass, wenn ich das erste Mal in der Warteschlange bin und keine andere Anwendung über mir auf dem Bildschirm ist), kann ich bestimmen, wo ich mich in der Touch-Ereigniswarteschlange befinde Kann ich nur Aktionen ausführen, wenn ich der erste in der Warteschlange bin?
Oder andere Vorschläge bitte. Danke Richard

Antwort

10

Ran in das gleiche Problem und landete auf der Suche nach der Quelle für das Nexus-Wallpaper zu sehen, wie es dort implementiert ist.

Ich glaube nicht, dass es möglich ist zu bestimmen, ob der tatsächliche Startbildschirm die Berührung verbraucht hat. Der standardmäßige Android-Startbildschirm sendet jedoch einen Befehl an das Hintergrundbild, wenn Sie auf einen leeren Bereich tippen. Also in Ihrem Motor, können Sie schreiben:

@Override 
public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested) { 
    if (action.equals(WallpaperManager.COMMAND_TAP)) { 
     // do whatever you would have done on ACTION_UP 
    } 
    return null; 
} 
+0

Perfekt :) - Ist genau das, was ich will - Danke - Können Sie lassen Sie mich wissen, wo Sie den Nexus-Code gefunden bitte - Richard – Richard

+0

http: //android.git .kernel.org /? p = plattform/packages/wallpapers/Basic.git; a = baum; f = src/com/android/wallpaper; hb = HEAD – Tim

+0

Danke - Ich fange an, mich selbst zu erziehen :) – Richard