Amici Androidiani, oggi vi propongo una guida utile a risolvere i problemi di funzionamento del sensore di prossimità.
In certi casi il sensore di prossimità può manifestare alcuni malfunzionamenti (cosa che sembra anche abbastanza diffusa con l'aggiornamento a kitkat), i più comuni sono.
- Ritardo nei tempi di risposta del sensore
- Mancata disattivazione del sensore
Per spiegarmi meglio:
- Il primo caso si manifesta con un ritardo nell'intervento del sensore...ad esempio, durante una chiamata, avvicinando il telefono all'orecchio, con l'intervento del sensore di prossimità, il display si spegnerà regolarmente ma allontanandolo il display perderà tempo nel riattivarsi.
- Il secondo caso si manifesta quando (utilizzando lo stesso esempio di sopra) allontanando il telefono dall'orecchio, il display non si riaccenderà da solo ma sarà necessario andare ad intervenire su uno dei tasti fisici per farlo risvegliare.
Per capire meglio come funziona il sensore di prossimità, digitate da dialer *#0*# e quindi selezionate "Sensor"...se tutto funziona correttamente, avvicinando la mano alla zona altoparlante, vedrete il display illuminarsi di verde e sentirete il telefono emettere una vibrazione, entrambi cesseranno allontanando la mano.
Nel caso in cui sia necessaria una semplice calibrazione, avvicinando la mano al sensore, l'accensione e la vibrazione, si manifesteranno con un po' di ritardo...stesso discorso, quindi calibrazione necessaria, vale se il telefono comincerà a vibrare senza che vi sia nulla nel raggio di azione del sensore.
Se all'attivazione del sensore al passaggio della mano, questo dovesse rimanere attivato, quindi display che resta colorato di verde e vibrazione continua, vi troverete di fronte al secondo tipo di difetto che ho descritto sopra (mancata disattivazione del sensore dopo il suo intervento).
Vediamo adesso come risolvere entrambi i problemi, l'unica condizione necessaria è avere i privilegi di root.
Calibrazione Sensore Prossimità
- Scaricate dal playstore "Android Terminal Emulator"
- Avviate il terminale
- Digitate (ad ogni comando date invio ovviamente):
- su
- echo 0 > /sys/devices/virtual/sensors/proximity_sensor/prox_cal
- echo 1 > /sys/devices/virtual/sensors/proximity_sensor/prox_cal
- reboot
Una volta riavviato, digitate nuovamente da dialer *#0*# e rieffettuate il test descritto sopra, tutto dovrebbe essere tornato a funzionare correttamente e con i giusti tempi di risposta.
Fix Malfunzionamento Sensore Prossimità
Per prima cosa, dovremo andare a controllare quali sono i valori "limite" del nostro sensore (non avremo tutti valori uguali nei nostri terminali, variano da telefono a telefono), per fare questo, utilizzando un programma che ci consenta di accedere al file system (root explorer, es gestore file e similari), posizioniamoci in:
sys/devices/virtual/sensors/proximity_sensor/
Apriamo con l'editor di testo il file "prox_cal" vi troverete di fronte una serie di cifre separate da virgole (0,64,100 nel mio caso), segnatevi solo la prima e chiudete l'editor.
Sempre con l'editor di testo, apriamo adesso il file "state" presente nella stessa directory, troverete in questo caso un solo valore (nel mio caso 64), segnate anche questo e chiudete l'editor.
Sommiamo i due valori che abbiamo memorizzato (0+64 nel mio caso) e convertiamo il valore ottenuto in esadecimale, potrete utilizzare questo sito per la conversione.
Nel mio caso 0+64=64 -> 64(decimale)=40(esadecimale)....perfetto il valore ottenuto in esadecimale (40 nel mio caso), sarà quello che ci consentirà di andare a fixare (o ricreare) il file prox_cal.it causa del problema.
A questo punto, dovrete:
- Scaricate dal playstore "Android Terminal Emulator"
- Avviate il terminale
- Digitate (invio al termine di ogni comando):
- su
- echo -en $ '\x(valore ottenuto)' > /efs/prox_cal (nel mio caso la stringa che ho digitato è: echo -en $ '\x40' > /efs/prox_cal)
- chown system:system /efs/prox_cal
- chmod 644 /efs/prox_cal
- sync
- Reboot
Una volta riavviato il cellulare, eseguite la procedura per la calibrazione descritta sopra ed il Vostro sensore di prossimità tornerà a funzionare alla perfezione.
Se anche così non dovesse andare è molto molto probabile, che il problema sia di natura hardware ed avrete bisogno dell'assistenza tecnica samsung.
La procedura non è farina del mio sacco, l'ho trovata su xda ma ho avuto modo di testarla proprio perchè il sensore, oggi ha deciso d'impazzire, mi sono ritrovato nella seconda situazione, quindi display che non si riaccendeva dopo aver allontanato il telefono dall'orecchio durante una chiamata, ho eseguito tutta la procedura ed il sensore ha ripreso a funzionare correttamente (secondo me anche meglio di prima)...in pratica il bug si manifesta per la corruzione (o cancellazione, come nel mio caso) di un file presente nella cartella efs...proprio per questo motivo non avevo risolto il problema neanche con un hard reset e con un flash firmware con odin, la cartella efs non viene toccata con le normali procedure di flash e reset...seguendo passo passo la procedura che ho descritto sopra ho risolto il problema in 10 minuti e senza ricorrere all'assistenza...per questo motivo ho ritenuto che potesse tornare utile anche a Voi Amici Androidiani.
P.S. Come ricordatomi correttamente da Dreds (che ringrazio) questa procedura è valida ed applicabile solamente a rom "touchwiz based" quindi derivate da firmware samsung, non è utilizzabile su AOSP e similari...ovviamente, in caso di necessità, basterebbe flashare su una rom diversa, eseguire il fix o la calibrazione e quindi tornare AOSP![]()