Sensoren mit Anruffunktionen kombinieren?

  • 13 Antworten
  • Neuester Beitrag
Diskutiere Sensoren mit Anruffunktionen kombinieren? im Automatisierung - Tasker im Bereich Tools.
C

cramu

Dauergast
Da ProXimity Talk, laut Entwickler, mit Jelly Bean nicht funktioniert, was ich leider auch selbst feststellen musste, würde mich mal interessieren, ob jemand ausgewählte Funktionen der App mit Hilfe von Tasker unter JB erfolgreich nachbilden kann?

Funktionen:

* Anruf beantworten wenn Telefon an Ohr gehalten wird

* Lautsprecher ein- oder ausschalten, abhängig davon, ob das Telefon am Ohr ist oder nicht

* Klingel-Lautstärke reduzieren, wenn Telefon bewegt wird (keine Fehlauslösungen durch Erschütterungen)


Ich habe alle dieser Funktionen schon nachgebaut, hatte jedoch im Praxistest massive Fehlfunktionen (Ruf wird nicht angenommen, trotz Telefon am Ohr; Lautsprecher schaltet sich ein, obwohl Telefon am Ohr; Telefon klingelt gar nicht; Mikrofon schaltet sich während Gesprächs stumm; usw.).
 
C

Chillmann

Stammgast
Für Lautsprecher aus wenn Handy am Ohr und umgekehrt versuch mal folgendes: https://www.android-hilfe.de/forum/...asker-profile.284580-page-4.html#post-4071066

Um Anrufe über Proxysensor an zu nehmen würde ich 3 Profile erstellen.
1. Status Proxysensor + Status Orientation "not face down" (also face down + haken bei "invert")
Eingangstask: 1) Phone "Take call", 2) Profilstatus: "Profil 1 --> aus"

2. Event: "incoming call"
Task: 1) Profilstatus: "Profil 1 --> an", 2) Profilstatus: "Profil 4 --> an"
(Aktion 2 nur falls "leise durch schütteln dazu verwendet wird)

3. Event: "missed call"
Task: 1) Profilstatus: "Profil 1 --> aus", 2) Profilstatus: "Profil 4 --> aus"
(Aktion 2 nur falls "leise durch schütteln dazu verwendet wird)


Bei Anruf leise durch schütteln:

Profil 4
Event: sensor -> "shake"
Task: 1) Audio settings: "Ringervolume ()", 2) Profilstatus: "Profil 4 --> aus"

Also ist aber alles nur theoretisch, probiert halt ma rum :)

:edit: um Fehlzündung des "Schüttelprofils" zu vermeiden musst du halt mit den Einstellungen zur Gestenerkennung rumspielen.

Gruß Chillmann
 
Zuletzt bearbeitet:
poedel

poedel

Neues Mitglied
cramu schrieb:
Ich habe alle dieser Funktionen schon nachgebaut, hatte jedoch im Praxistest massive Fehlfunktionen (Ruf wird nicht angenommen, trotz Telefon am Ohr.
ah, hier tummelt sich der gute Mann, der dem Martin von Proximity Talk gesagt hat, dass Tasker Anrufe unter Billy Jean annehmen kann. :tongue:

Aus deiner Aussage ist jetzt nicht ganz klar ersichtlich, ob es überhaupt schonmal funktioniert hat, ein Gespräch mit dem Proximity Sensor anzunehmen.
Geht es denn überhaupt?

Der Zugriff auf die eigentliche Funktion wurde ja schon in Ginger Ale entfernt. Man bedient sich laut Producer eines Workarounds, der die Annahmetaste eines Bluetoothheadsets simuliert.
Ich habe leider von der Androidenprogrammierung recht wenig Schimmer, aber wohl von Linux ansich (gentoo). Von daher möchte ich mal die Behauptung wagen, dass es eigentlich über den Umweg R00T gehen müsste, ein Gespräch anzunehmen. Martin hat das auch schonmal probiert, erzielte leider nicht den gewünschten Zweck.
 
C

Chillmann

Stammgast
Wenns mit Tasker nicht funktioniert nach meiner Anleitung würde ich erforschen ob es am Auslöser (Proxysensor) oder an der Aktion (Take Call) liegt. Letzteres ließe sich über die Aktion
"Input -> button -> Call" umgehen. Hierfür ist ROOT allerdings unabdingbar.
 
poedel

poedel

Neues Mitglied
Chillmann schrieb:
Input -> button -> Call
klingt ziemlich gut.. komisch wäre da nur, wie ent tasker oder weder secure settings es hinbekommt, eine Funktion auszuführen, die letztmalig in Fr0y0 verfügbar war ..
mal sehen, wann ich mal Muße finde, das zu testen.
 
Troya

Troya

Stammgast
Wie erkennt das denn ob es sich um das Ohr oder die Hosentasche handelt?
 
poedel

poedel

Neues Mitglied
mit faceunlock *lol*
ne natürlich nicht ;)
Also in der proximity talk app wird das folgendermassen überorüft:
Wenn der Anruf ankommt gibt es zwei Möglichkeiten:
1) Proximity niedrig = Gerät in Hosentasche oder zum Display verkratzen falsch rum auf dem Tisch liegend
2) Proximiy hoch = liegt auf mit dem Rücken auf einem Tisch oder wie auch immer, so dass jedenfalls nichts den Sensor abdeckt.

Fall 2 ist einfach: hier wird das Gespräch angenommen, sobald Proximity gering über eine gewisse Millisekundenzahl gemessen wird.
Fall 1: Hier muss das Gerät mindestens X Sekunden eine hohe Proximität (geiles Wort) haben, bis das Gespräch durch Verringerung der Entfernung angenommen wird.

Die ganze Sache ist reichlich kompliziert. Wenn tasker Standards wie if-then-else-elseif & Co verwenden würde könnte ich das mal eben hinprügeln. Bislang ist mir die Idee mit den Profilen und Tasks allerdings eher nicht intuitiv. Ich bekomme es so langsam auf die Reihe, aber auch wenn es hier leicht offtopic wird versuche ich gerade zu regeln, was passiert, wenn ich gsm'ig in mein Heimnetz eingeloggt bin. Leider kann ich hier nicht Tasks wie "leise" "BT off" "wifi on" etc miteinander kombinieren, sonder müßte für alles ein einzelnen Profil anlegen oder ein Profil "home", was das Ding leise stellt, wifi anschraubt und den Blauzahn aus. Aber vielleicht sind das ja makr0s.. so weit war ich noch nicht fortgeschritten *G*. Dummerweise kann weder täsker noch secsettings mein Vibra steuern.. reichlich arm.. schade. Also weitersuchen.. muß doch gehen :)
 
Troya

Troya

Stammgast
Ui, das ist in der Tat ziemlich komplex.
Aber die Idee ist nicht schlecht.:thumbsup:
 
C

Chillmann

Stammgast
poedel schrieb:
klingt ziemlich gut.. komisch wäre da nur, wie ent tasker oder weder secure settings es hinbekommt, eine Funktion auszuführen, die letztmalig in Fr0y0 verfügbar war ..
mal sehen, wann ich mal Muße finde, das zu testen.
Ich weiß zwar nicht welchen Linux Befehl Tasker bei dieser Aktion ausführt (wahrscheinlich Input keyevent), aber es funktioniert tadellos unter ICS und glaube auch schon unter Lebkuchen.

Wenn der Anruf ankommt gibt eszwei Möglichkeiten: 1) Proximity niedrig = Gerät in Hosentasche oder zum Displayverkratzen falsch rum auf dem Tisch liegend 2) Proximiy hoch = liegtauf mit dem Rücken auf einem Tisch oder wie auch immer, so dassjedenfalls nichts den Sensor abdeckt.

Fall 2 ist einfach: hier wird das Gespräch angenommen, sobald Proximity gering über eine gewisse Millisekundenzahl gemessen wird. Fall 1: Hier muss das GerätmindestensX Sekunden eine hohe Proximität (geiles Wort) haben, bis das Gespräch durch Verringerung der Entfernung angenommen wird.
Profil: (nennen wie es "Proxy")
Status: sensor -> proximity sensor (Haken bei invert)
Eingangstask:
1) variable -> variable set (%Proxy to 0)
2) task -> wait until (until %Proxy = 1)
3) phone -> take call (oder input -> button (call))

Ausgangstask:
1) variable -> variable set (%Proxy to 1)

Neues Profil:
Status: phone -> call (incoming)
Eingangstask: Tasker -> profile status (Proxy on)
Ausgangstask: Tasker -> profile status (Proxy off)

Durch Invertierung des proximity sensor Status wird der Eingangstask erst ausgeführt wenn der Sensorstatus
von verdeckt auf frei wechselt.
Das ganze sollte sich nun folgendermaßen verhalten:

Fall 1: (Handy auf Rücken, Sensor frei)
Anruf geht ein -> Proxy Profil wird eingeschaltet (das Profil wird direkt aktiv und führt den Eingangstask aus)
Handy wird ans Ohr gehalten (Sensor verdeckt) -> Ausgangstask des Proxy Profils wird ausgeführt.

Fall 2: (Handy in Hosentasche oder auf Display)
Anruf geht ein -> Proxy Profil wird eingeschaltet (da der Sensor verdeckt ist, ist das Profil nicht aktiv und führt vorerst keinen Task aus)
Handy wird aus der Hosentasche hervor geholt -> Sensor wird frei -> Proxy Profil wird aktiv und führt den Eingangstask aus. (welcher auf Verdeckung des Sensors wartet und dann den Anruf annimmt)

:edit: hubs, habe die Fälle vertauscht. :)
 
Zuletzt bearbeitet:
C

cramu

Dauergast
Da das Thema ja mittlerweise ganz guten Zuspruch findet, werde mich auch mal wieder zu Wort melden und ein Feedback zu meinen bisherigen Tests geben.

Vorweg erstmal: der Take-Call-Task funktioniert, wie der Tasker dies macht, vermag ich nicht zu sagen.



Vielen Dank an Chillman für die gute Vorlage, mein ursprüngliches Profil war von den Funktionen nicht sehr anders, aber ich mag die Idee, dass die Unterprofile sich gegenseitig aktivieren und deaktivieren, so dass ich das Grundgerüst übernommen und noch etwas angepasst habe.
Mir ist außerdem aufgefallen, dass mir vorher die App Increasing Ring immer mit reingepfuscht hat, so dass ich diese jetzt deinstalliert und durch ein Tasker Profil ersetzt habe.

Bei mir sieht das Ganze jetzt so aus:

1. Status Proxysensor + Status Orientation "Standing Up"
Eingangstask: 1) Phone "Take call", 2) Profilstatus: "Profil 1 --> aus"

2. Event: "incoming call"
Task: 1) Profilstatus: "Profil 4 --> an", 2) Profilstatus: "Profil 5 --> an"

3. Event: "missed call"
Task: 1) Profilstatus: "Profil 1 --> aus", 2) Profilstatus: "Profil 4 --> aus"

Profil 4
Event: sensor -> "shake"
Task: 2) Profilstatus: "Profil 5 --> aus", 2) Silent Mode On", 3) Profilstatus: "Profil 1 --> an", 4) Profilstatus: "Profil 4 --> aus"

Profil 5
Event: "phone ringing"
Task: 1) "wait 10 secs", 2) "Ringer Volume 6", 3) "wait 10 secs", 4) "Ringer Volume 7"

Profil 6
Event: "phone idle"
Task: 1) "Silent Mode Off", 2) Profilstatus: "Profil 5 --> aus", 3) "Ringer Volume 5", 4) "Go Home"



Troya schrieb:
Wie erkennt das denn ob es sich um das Ohr oder die Hosentasche handelt?
In meinem Fall wird die Rufannahme nur ausgelöst, wenn der Proximity-Sensor aktiviert ist, das Phone aufrecht steht (funktioniert also nicht, wenn man auf der Couch liegt) und vorher bewegt wurde.



An meinem Speakerphone-Profil muss ich hingegen noch ein wenig herumbasteln.
Hier hat mir der Hinweis
Chillmann schrieb:
Innerhalb der Taskersettings muss der Proxy sensor auch bei Screen off aktiv sein
weitergeholfen, allerdings finde ich keine Möglichkeit,
Chillmann schrieb:
die Rom-interne Displaysteuerung für Anrufe
zu deaktivieren.

Mein momentanes Profil schaut folgendermaßen aus, führt allerdings häufig dazu, dass während des Gesprächs das Mikrofon stumm schaltet und sich nicht mehr aktivieren lässt, dass der Freisprecher und das Display einschalten, obwohl das Phone am Ohr ist oder dass der nur der Freisprecher, aber nicht das Display einschaltet, wenn das Phone vom Ohr genommen wird:

Status: Not Proxysensor + Status "Call Any"
Eingangstask: Speakerphone On
Exit-Task: Speakerphone Off

Da die Grundfunktionalität dieses Profils noch nicht gegeben ist, habe ich es noch nicht weiter verfeinert, momentan habe ich halt keine Idee, woher die Fehlfunktionen rühren.
 
C

Chillmann

Stammgast
Das mit der Displaysteuerung ist wohl auch Romabhängig.
Unter MUI findet sich die Option wenn man die Telefonapp öffnet -> Menübutton -> Einstellungen -> Status Einstellungen eingehender Anrufe.

Wenn diese Displaysteuerung vernünftig funktionieren würde, könnte man Tasker einfach sagen:
Display an -> speakerphone an
Display aus -> speakerphone aus

Leider deaktiviert diese Steuerung den Annäherungssensor bei aktivem Lautsprecher (zumidest auf nem s2 unter sock rom als auch custom rom)

Vllt ginge:

Profil:
Status: Display on + call any
Task:
1) speakerphone on
2) Profilstatus (Proxyprofil on)

Proxyprofil:
Status: Proximity sensor (nicht invert)
Task:
1) speakerphone off
2) Display off
3) Profilstatus (Proxyprofil off)

Wie bereits erwähnt schaltet die Telefonapp den Proxysensor aus, sobald man manuell oder via Tasker den Lautsprecher einschaltet. Umgekehrt funzt das glaube nicht so toll.
Wird via Tasker der Lautsprecher wieder ausgeschaltet, wird der Proxysensor manchmal garnicht oder mit viel Verzögerung wieder aktiv.

Probier halt ma rum :unsure:
 
roux.

roux.

Fortgeschrittenes Mitglied
Chillmann schrieb:
Ich weiß zwar nicht welchen Linux Befehl Tasker bei dieser Aktion ausführt (wahrscheinlich Input keyevent), aber es funktioniert tadellos unter ICS und glaube auch schon unter Lebkuchen.



Profil: (nennen wie es "Proxy")
Status: sensor -> proximity sensor (Haken bei invert)
Eingangstask:
1) variable -> variable set (%Proxy to 0)
2) task -> wait until (until %Proxy = 1)
3) phone -> take call (oder input -> button (call))

Ausgangstask:
1) variable -> variable set (%Proxy to 1)

Neues Profil:
Status: phone -> call (incoming)
Eingangstask: Tasker -> profile status (Proxy on)
Ausgangstask: Tasker -> profile status (Proxy off)

Durch Invertierung des proximity sensor Status wird der Eingangstask erst ausgeführt wenn der Sensorstatus
von verdeckt auf frei wechselt.
Das ganze sollte sich nun folgendermaßen verhalten:

Fall 1: (Handy auf Rücken, Sensor frei)
Anruf geht ein -> Proxy Profil wird eingeschaltet (das Profil wird direkt aktiv und führt den Eingangstask aus)
Handy wird ans Ohr gehalten (Sensor verdeckt) -> Ausgangstask des Proxy Profils wird ausgeführt.

Fall 2: (Handy in Hosentasche oder auf Display)
Anruf geht ein -> Proxy Profil wird eingeschaltet (da der Sensor verdeckt ist, ist das Profil nicht aktiv und führt vorerst keinen Task aus)
Handy wird aus der Hosentasche hervor geholt -> Sensor wird frei -> Proxy Profil wird aktiv und führt den Eingangstask aus. (welcher auf Verdeckung des Sensors wartet und dann den Anruf annimmt)

:edit: hubs, habe die Fälle vertauscht. :)
Versuche gerade verzweifelt das umzusetzen. Allerdings macht Tasker bei mir nicht so ganz mit und zwar bei
2) task -> wait until (until %Proxy = 1)
muss ich zusätzlich noch ein Wartezeit von mindestens 1 Sekunde eintragen....wenn ich das mache funktioniert es aber immer noch nicht.

Kannst du falls du die Profile noch nutzt diese mal exportieren und als Download zur Verfügung stellen ???
 
C

Chillmann

Stammgast
Hi,

die Profile haben bei mir nur im Gedankenexperiment funktioniert. Hatte sowas nie im Einsatz. Aber ich denke, als ich mir die Profile ausgedacht habe, gab es die Profiloption: "enforce task order" noch nicht. Diese bewirkt, dass ein Ausgangstask erst ausgeführt wird, wenn der Eingangstask komplett abgearbeitet wurde. Sie muss also deaktiviert werden, sonst hängt sich das Profil immer an der Stelle "wait until (proxy = 1)" auf, da der Wert für Proxy ja erst mit dem Ausgangstask auf 1 gesetzt wird, dieser aber nicht ausgeführt wird, da der Eingangstask noch nicht abgeschlossen ist.

Also lange auf das Profil drücken und oben rechts die Profiloptionen öffnen und enforce taskorder ausmachen.


Gruß

Chillmann
 
roux.

roux.

Fortgeschrittenes Mitglied
Chillmann schrieb:
Hi,

die Profile haben bei mir nur im Gedankenexperiment funktioniert. Hatte sowas nie im Einsatz. Aber ich denke, als ich mir die Profile ausgedacht habe, gab es die Profiloption: "enforce task order" noch nicht. Diese bewirkt, dass ein Ausgangstask erst ausgeführt wird, wenn der Eingangstask komplett abgearbeitet wurde. Sie muss also deaktiviert werden, sonst hängt sich das Profil immer an der Stelle "wait until (proxy = 1)" auf, da der Wert für Proxy ja erst mit dem Ausgangstask auf 1 gesetzt wird, dieser aber nicht ausgeführt wird, da der Eingangstask noch nicht abgeschlossen ist.

Also lange auf das Profil drücken und oben rechts die Profiloptionen öffnen und enforce taskorder ausmachen.


Gruß

Chillmann
Danke für die Antwort!! Hab es ausprobiert. Leider funktioniert das mit dem Anruf annehmen so nicht. Aber trotzdem Danke für deine Hilfe!!