Asi se mi to povedlo vyřešit. Nastavil jsem prodlevu (5 sekund - tu můžeš změnit v profilu Phone Ringing úpravou hodnoty proměnné %PHONE_WAIT_TIME). Ta je tam proto, že pokud je vypnutý displej a někdo zavolá, chvíli trvá, než Tasker zareaguje na stav proximity senzoru. Takže pokud zjistí zakrytý proximity do 5 sekund od začátku vyzvánění, zvedne hlasitost, pokud náhodou zakryješ senzor po této době, už reagovat nebude. Naopak na otočení telefonu bude reagovat až po této prodlevě, takže pokud bude telefon jen ležet na stole displejem dolů, zvonění se nevypne, ale zvedne se hlasitost naplno (je zakrytý proximity), jestliže ale otočíš telefon displejem dolů až po těch 5 sekundách od začátku zvonění, vyzvánění se ztlumí na nulu. Je tu jediný problém, pokud telefon otočíš zpět, hlasitost se opět zvedne na původní úroveň, pokud to druhá strana ještě nevzdala (to je standardní chování Taskeru u profilů State) - zkusím s tím ještě něco vymyslet. Jinak pro ztlumení vyzvánění při otočení telefonu jsem nepoužil Silent Mode, ale snížení hlasitosti na minimum (úroveň 0), což jednoduchým způsobem zajistí to, že pokud máš předtím zapnutý tichý režim, nevypne se po ukončení hovoru. Po ukončení vyzvánění (položení hovoru, přijmutí hovoru) se hlasitost nastaví na úroveň, která byla nastavena předtím, takže jsem nepoužil žádnou pevně danou hlasitost (myslím, že je to takhle lepší). Ještě jedna věc: pokud máš telefon třeba v kapse a tedy začne zvonit naplno, tak jakmile jej vytáhneš (odkryješ proximity), hlasitost se také vrátí na původní úroveň.
Tady je celý zápis, jinak si to můžeš stáhnout, aby jsi to nemusel zadávat ručně (dávám to jako přílohu k tomuhle příspěvku):
Profile:
Event: Phone -> Phone Ringing
Variable Set [ Name:%PHONE_RING_START To:%TIMES ]
Variable Set [ Name:%PHONE_CALL To:ring ]
Variable Set [ Name:%PHONE_WAIT_TIME To:5 ]
Variable Set [ Name:%PHONE_LAST_VOL To:%VOLR ]
Profile:
Event: Phone -> Phone Offhook
Variable Clear [ Name:%PHONE_RING_START ]
Ringer Volume [ Level:%PHONE_LAST_VOL If:%PHONE_CALL ~ ring ]
Variable Set [ Name:%PHONE_CALL To:call ]
Profile:
Event: Phone -> Phone Idle
Variable Clear [ Name:%PHONE_RING_START ]
Ringer Volume [ Level:%PHONE_LAST_VOL If:%PHONE_CALL ~ ring ]
Variable Set [ Name:%PHONE_CALL To:idle ]
Profile:
State: Sensor -> Proximity Sensor
If [ %PHONE_RING_START Is Set ]
Variable Set [ Name:%temp To:%TIMES - %PHONE_RING_START Do Maths: on ]
If [ %temp < %PHONE_WAIT_TIME ]
Ringer Volume [ Level:7 ]
End If
End If
Profile:
State: Sensor -> Orientation [ Face Down ]
If [ %PHONE_RING_START Is Set ]
Variable Set [ Name:%temp To:%TIMES - %PHONE_RING_START Do Maths: on ]
If [ %temp > %PHONE_WAIT_TIME - 1 ]
Ringer Volume [ Level:0 ]
End If
End If
Dne čtvrtek, 28. června 2012 8:42:41 UTC+2 František Lorenc napsal(a):