MareX WeBlog

Tasker - automatické zvýšení hlasitosti vyzvánění v kapse

REKLAMA

Někteří z Vás určitě vědí, že v Androidech obsahujících HTC Sense funguje několik vychytávek, využívajících různé senzory v telefonu, které v „čistém“ Androidu nejsou. Jednou z nich je funkce, která nám automaticky zvýší hlasitost vyzvánění příchozího hovoru, pokud máme telefon v kapse nebo tašce. Já osobně jsem si na tohle zvykl už ve Windows Mobile ve svém HD2. Od té doby by mě ani nenapadlo (jako dřív u „hloupých“ mobilů), abych si před odchodem někam ven, měnil vyzváněcí profil, zvyšoval hlasitost vyzvánění (protože doma jí mám tak na polovic) nebo zapínal vibrace. Jednoduše proto, že na to už díky HTC nemyslím. Jenže teď ve svém HD2 používám ROM TyphooN CyanogenMod 7, která HTC Sense neobsahuje a tudíž v ní tato automatika nefunguje.

Nedávno jsem si koupil prográmek Tasker, o kterém jsem tu nedávno také psal článek a vzhledem k jeho možnostem jsem si usmyslel, že si něco podobného vytvořím. Zdá se, že se povedlo a tak se tu s Vámi o to podělím.

Celé to funguje následovně:

Pokud začne telefon vyzvánět, po dvou vteřinách se zkontroluje, jestli je zakrytý proximity senzor. Pokud je, zvedne se hlasitost vyzvánění na maximum a zapnou se vibrace. To vše pouze, pokud není telefon v tichém režimu. Jestliže během vyzvánění dojde k vytažení telefonu z kapsy (pouzdra) a tím pádem k odkrytí proximity senzoru, vypnou se vibrace (bohužel nevypnou, měly by, ale u mě to nějak nefunguje) a hlasitost vyzvánění se postupně (v půl vteřinových intervalech) ztlumí až na úroveň 2 (nevím, jestli je to u všech telefonů stejné, u mě má hlasitost vyzvánění 7 úrovní). To je z důvodu, aby mi mobil neřval na celé kolo v ruce, než se rozhodnu, jestli hovor přijmu nebo ne. Ať už telefon během vyzvánění z kapsy vytáhnu nebo nevytáhnu, ať hovor přijmu nebo nepřijmu, po ukončení hovoru se automaticky nastaví hlasitost na původní úroveň.

Omezení:

Tato omezení jsou buď omezení Taskeru (např. nekontrolování senzorů při vypnutém displeji), jiná jsem vypozoroval na svém telefonu a na Vašem se mohou projevit jinak.

  1. Tasker nekontroluje proximity senzor při vypnutém displeji. Problém by mohl nastat v případě, že zakryjete proximity senzor a během toho mobil uspíte. Tasker si pořád myslí, že je senzor zakrytý, až do dalšího probuzení. Z toho důvodu je po začátku vyzvánění nastavena prodleva před kontrolou stavu proximity senzoru. Jinak by Vám mohl telefon začít řvát na celé kolo i když jej budete mít volně položen na stole.
  2. Po probuzení telefonu (rozsvícení displeje) chvíli trvá, než Tasker zaregistruje aktuální stav proximity senzoru, takže by se mohlo stát, že i když bude telefon v pouzdře, nevyzváněl by naplno, protože kontrola senzoru by proběhla příliš brzy a Tasker byl v tu chvíli ještě přesvědčen, že proximity senzor zakrytý není. Proto je prodleva nastavena na celé dvě vteřiny (u mého HD2 to stačí, u Vás to může být jinak).

Tak a nyní celé nastavení Taskeru. Napíšu ho normálně zkráceně, pokud byste něčemu nerozuměli, zeptejte se v diskuzi pod článkem.

New -> State -> Proximity Sensor

  • Enter Task
    1. Variable -> Variable Set (Name: %MXPROXIMITY | To: 1) {Do Maths}
  • Exit Task
    1. Variable -> Variable Clear (Name: %MXPROXIMITY)
    2. Task -> If (%MXOLDRINGVOL [Is Set])
    3. Audio -> Vibrate On Ringer (Set: Off)
    4. Task -> Wait (MS: 500)
    5. Variable -> Variable Set (Name: %TEMPVOLR | To: %VOLR) {Do Maths}
    6. Audio -> Ringer Volume (Level: %TEMPVOLR)
    7. Task -> Go To Action (Number: 4) {If: %VOLR > 2}
    8. Variable -> Variable Clear (Name: %MXAUTORINGVOL)
    9. Task -> End If

New -> Event -> Phone -> Phone Ringing

  • Enter Task
    1. Task -> If (%SILENT ~ off)
    2. Variable -> Variable Set (Name: %MXPHONERINGING | To: 1) {Do Maths}
    3. Variable -> Variable Set (Name: %MXOLDRINGVOL | To: %VOLR)
    4. Task -> Wait (Seconds: 2)
    5. Task -> If (%MXPROXIMITY [Is Set])
    6. Variable -> Variable Set (Name: %MXAUTORINGVOL | To: 1)
    7. Audio -> Vibrate On Ringer (Set: On)
    8. Audio -> Ringer Volume (Level: 7)
    9. Task -> End If
    10. Task -> End If

New -> Event -> Phone -> Phone Idle

  • Enter Task
    1. Audio -> Ringer Volume (Level: %MXOLDRINGVOL) {If: %MXOLDRINGVOL [Is Set]}
    2. Variable -> Variable Clear (Name: %MXPHONERINGING)
    3. Variable -> Variable Clear (Name: %MXOLDRINGVOL)


Předpokládám, že je to relativně pochopitelné, ale pro ty méně chápavé trochu vysvětlím.

Enter Task je ten se zelenou šipkou (bavíme se teď o rozhraní samotného programu), Exit Task je se šipkou červenou. První Task, který u profilu vytvoříte, je vždycky Enter Task. Exit Task vytvoříte tak, že kliknete na Enter Task a z nabídky vyberete Add Exit Task.

Pokud se hodnota u některého úkolu zadává posuvníkem (například Ringer Volume), lze zadat libovolnou hodnotu kliknutím na stočené šipky vpravo od posuvníku.

Pokud zadáváte něco jako: %VOLR – 1, ujistěte se, že mezi všemi částmi jsou mezery. Nemůžete to napsat takto: %VOLR-1, musí to být takto: %VOLR(mezera)-(mezera)1 (v tomhle případě by druhá mezera být nemusela, ale jindy ano).

Tohle by mělo být všechno, u mě to zatím funguje.

REKLAMA

Tasker - automatické zvýšení hlasitosti vyzvánění v kapse