Montag, 2. Mai 2011

[Profil] Nachrichten-Widget mit Zoom für SMS, Email und Trillian

Da ich im Market kein brauchbare Widget um sich Emails, SMSen etc. anzeigen zu lassen gefunden habe, musste ich mir selber eins basteln.
Vom Entwickler von Tasker gibt es auch die App Zoom. Mit dieser ist es möglich Widgets selber zu kreieren, auf denen unter anderem Texte ausgegeben werden können. Mit Hilfe von Tasker kann man nun ohne Schwierigkeiten eingehende SMS Nachrichten auf einem Zoom-Widget anzeigen lassen. Durch einen Klick auf das Widget soll dann auch noch die passende App geladen werden.

Als erstes muss mit Zoom ein neues Widget mit 2 Textfeldern angelegt werden. Textfeld 1 nennen wir "Abs" in dieses kommt der Absender der Nachricht, Textfeld 2 soll "Nachricht" heißen, in diesen kommt dann die jeweilige Nachricht.
Das Widget habe ich "Nachrichtenwidget" genannt.
Farbe und Layout überlasse ich jedem selber, bei mir sieht das fertige Widget folgendermaßen aus:
screenshot

Nun brauchen wir 3 Profile um auf die 3 Nachrichtentypen reagieren zu können:
  • Profil 1: "SMS"
    • Trigger: "Received Text"
  • Profil 2: "Email"
    • Trigger: "K9 Email Received"
  • Profil 3: "Trillian"
    • Trigger: "Event->UI->Notification
      • Owner Application: "Trillian"
Als nächstes wird jedem Profil ein Task zugeordnet. In diesem werden jeweils Absender und Inhalt der jeweiligen Nachricht den Feldern "abs" und "Nachricht" des Zoom Widgets übergeben.
Um ein Zoom Textfeld zu ändern geht man im jeweiligen Task auf: "Zoom->Element Text". Bei Element trägt man den Namen des Widgets und Textelementes ein (mit der Lupe wird eine Auswahlliste geöffnet) und bei Text kommt der anzuzeigende Text hinein. Die Variable %NTYPE dient dazu, den Nachrichtentyp zu speichern, dieser wird später gebraucht um die jeweilige App zu starten.
Hier nun die fertigen Profile für SMS und Email:
  • Profil 1: "SMS"
    • Trigger: "Received Text"
    • Tasks:
      1. Zoom -> Element Text
        • Element: Nachrichtenwidget / abs
        • Text: %SMSRN
      2. Zoom -> Element Text
        • Element: Nachrichtenwidget / Nachricht
        • Text: %SMSRB
      3. Variable -> Variable Set
        • Name: %NTYPE
        • To: sms
  • Profiil 2: "Email" 
    • Trigger: "K9 Mail Received"
    • Tasks:
      1. Zoom -> Element Text
        • Element: Nachrichtenwidget / abs
        • Text: %EFROM
      2. Zoom -> Element Text
        • Element: Nachrichtenwidget / Nachricht
        • Text: %ESUBJ
      3. Variable -> Variable Set
        • Name: %NTYPE
        • To: mail 
Für die Anzeige von Trillian Nachrichten wird das Profil etwas aufwendiger, da es kein spezielles Ereignis für Trillian gibt. Dafür gibt Trillian eine Benachrichtigung mit Absender und Nachricht aus. Mit dem Event "Notification" als Trigger können wir nun auf ankommende Nachrichten reagieren. Dann müssen wir mit "Variable Split" (Tutorial: Variable Split) nur noch den Benachrichtigungstext zerlegen um unsere beiden Felder "abs" und "Nachricht" beschreiben zu können. Falls jemand uns nun mit einmal mehrere Nachrichten sendet, sollen diese zusammengefasst dargestellt werden. Dazu wird die Variable %TFROM eingeführt. Diese beinhaltet den Absender der letzten Nachricht. Stimmt dieser mit der aktuellen Nachricht überein wird die neue Nachricht an die alte Nachricht angehängt, ansonsten wird die alte Nachricht überschrieben.
  • Profil 3: "Trillian"
    • Trigger:
      1. Event -> Notification
        • Owner Application: Tasker
    • Tasks: 
      1. Variable -> Variable Split
        • Name: %NTITLE
        • Splitter: :
      2. Variable -> Variable Set
        • Name: %TRILLIAN
        • To: %NTITLE2
        • Append: ja
        • If %NTITLE1 ~ %TFROM
      3. Variable -> Variable Set
        • Name: %TRILLIAN
        • To: %NTITLE2
        • Append: nein
        • If %NTITLE !~ %TFROM
      4. Zoom -> Element Text
        • Element: Nachrichtenwidget / abs
        • Text: %NTITLE1
      5. Zoom -> Element Text
        • Element: Nachrichtenwidget / Nachricht
        • Text: %TRILLIAN 
      6. Variable -> Variable Set
        • Name: %TFROM
        • To:%NTITLE1
      7. Variable -> Variable Set 
        • Name: %NTYPE
        • To: im

Nun brauchen wir nur noch den Task zum starten der jeweiligen Anwendung. Dazu gehen wir einfach auf "Tasks -> New Task" und erstellen folgenden Task:
  • Task: "Nachrichten Klick"
    • 1. App -> Load App
      • App: Google Mail
      • If %NTYPE ~ mail
    • 2. App -> Load App
      • App: Trillian
      • If %NTYPE ~ im
    • 3. App -> Load App
      • App: Nachricht
      • If %NTYPE ~ sms
    • 5. Zoom -> Element Text
      • Element: Nachrichtenwidget / abs
      • Text: Nachrichtenwidget:
    • 6. Zoom -> Element Text
      • Element: Nachrichtenwidget / Nachricht
      • Text: keine neuen Nachrichten!
    • 7. Variable -> Variable Clear
      • Name: %TRILLIAN
    • 8. Variable -> Variable Clear
      • Name: %NTYPE
    • 9. Variable -> Variable Clear
      • Name: %TFROM  
Nun muss dieser Task noch in Zoom angegeben werden. Dazu Zoom öffnen und das Nachrichtenwidget bearbeiten. Nun auf das Nachrichten Text Element klicken und ganz runter zu "Click Action" scrollen. Dort mit klick auf die Lupe "Tasker Task" auswählen und dann den "Nachrichten Klick" Task.

Kommentare:

  1. Hallo,
    sehr schönes Tut. Funktioniert der Trillian Part auch mit Skype und WhatsApp? Wenn ja, was müsste angepasst werden?
    Sascha

    AntwortenLöschen
  2. Mit Skype funktioniert es nur bedingt, da Skype leider nur den Absender in der Benachrichtigung anzeigt. Das Profil um zumindest den Absender anzuzeigen sieht folgendermaßen aus:

    Profil "Skype"
    Trigger: Event -> Notification
    Owner Application: Skype
    Task: Zoom -> Element Text
    Element: Nachrichtenwidget / Abs
    Text: %NTITLE

    Da in %NTITLE eh nur der Absender steht muss nichts weiter angepasst werden.

    Wie das mit WhatsApp auschaut weiß ich nicht da ich es nicht nutze, aber das kannst du einfach selber testen indem du %NTITLE komett im "Nachricht" Feld ausgibst, als "Owner Application" müsstest du in dem Profil natürlich WhatsApp angeben

    AntwortenLöschen
  3. Danke fürs Tutorial!

    Meine Frage: Ich habe mir das mydealz-App installiert. Dieses sendet neuste Schnäppchen per Push-Notifications in die Statusleiste.
    Meine Einstellungen sind atm:

    Profil "mydealz"
    Trigger Event -> Notofication
    Owner Application Mydealz
    Task: Zoom -> Element Text
    Element: Nachrichtenwidget / Nachricht
    Text %NTITLE


    Die Notification gibt mir in der Leiste die Überschrift (Mydealz) darunter dann den News-Text.

    Leider bekomme ich nur die Überschrift ins Widget. Hast du vielleicht noch ne Idee?

    Danke

    AntwortenLöschen
  4. Hier nochmal der Screenshot:

    http://imageshack.us/photo/my-images/845/screenjpg.png/

    AntwortenLöschen
  5. Ok, so wei ich das sehe, läuft das auch wie bei Trillian mit Variable Split. Wie bekomme ich den Splitter raus?

    und kann man das irgendwie einstellen, das man nur die fünf neusten News angezeigt bekommt?

    Ich probier mal weiter

    AntwortenLöschen
  6. Leider kann man mit Tasker nur auf den Titel der Notification zugreifen. Bei Trillian ist es glaube so, dass der zuerst den Text der empfangenen Nachricht in den Titel legt und man deswegen über Tasker darauf zugreifen kann.

    Du kannst also nur mit dem arbeiten was in %NTITLE abgelegt wurde. Wenn bei MyDealz da nur MyDealz drin steht, geht leider nicht mehr.

    Was meinst du mit einstellen, dass man nur die 5 neuesten Meldungen bekommt? Mit %NTITLE bekommste ja eh nur die letzte Notification.

    AntwortenLöschen
  7. Dann hat sich das schon erledigt. Hatte noch ne Weile mit der Variable %NTITLE rum gespielt...

    Danke trotzdem für die tollen Anregungen!

    AntwortenLöschen