2016-01-04 22 views
5

Ho uno smartphone collegato a un caricabatterie solare. Di giorno, viene alimentato correttamente. Ma durante la notte, a volte si spegne a causa della mancanza di energia.Android: accensione programmabile di un dispositivo

La mia domanda è: è possibile riaccenderlo (programmaticamente), quando la carica della batteria supera una certa percentuale? Sto cercando un modo pulito e legale. Non sono interessato a difetti o exploit. Non ho trovato nulla nella documentazione ufficiale. Grazie.

+0

Non esiste alcun codice utente o sistema operativo in esecuzione in quel punto, quindi no, non è possibile. –

+2

@SamiKuhmonen - come viene visualizzata l'animazione di ricarica, quindi? –

+0

Problema interessante ... Ho una situazione simile che sto cercando di risolvere. Ne parliamo a XDA, ecco il link: http://forum.xda-developers.com/showthread.php?t=1187631&page=7 – portsample

risposta

3

Il meccanismo per fare questo si basa sulla sostituzione della sceneggiatura di animazione della batteria, che viene eseguito mentre il dispositivo è spento ma collegato, visualizzando in genere un'icona della batteria di ricarica. Il nome dello script varia da dispositivo a dispositivo, ma generalmente si trova nella directory /system/bin. I dispositivi Samsung generalmente chiamano lo script playlpm e altri nomi per lo script che ho visto includono ipod, lpm e battery_charging. Ciò non funzionerà necessariamente su tutti i dispositivi, perché questo è ben al di fuori del framework standard di Android: alcuni dispositivi potrebbero non avere uno script equivalente, oppure potrebbero implementarlo in un modo diverso.

Questo potrebbe essere caratterizzato come un "exploit" in quanto richiede la root e funziona a livello di Linux piuttosto che a livello di framework Android, ma attualmente non esiste un'alternativa per l'implementazione di questo comportamento.

Il meccanismo generale per apportare questa modifica è descritto qui: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected. Ovviamente è una buona idea eseguire il backup del precedente script di animazione della batteria prima di eseguire questa operazione.

Il seguente script ha funzionato per me su più dispositivi (diversi dispositivi Samsung e Verizon Ellipsis 7). Fondamentalmente, controlla se il telefono è collegato all'alimentazione CA e ha una carica sufficiente. Se è così, si avvia. In caso contrario, attende N secondi e ci riprova. Come effetto collaterale, lo script di animazione della batteria originale non verrà eseguito e non vedrai mai la bella animazione di ricarica.

#!/system/bin/sh                    

# battery threshold before boot-up (in percent)             
bthresh=10 

# time to sleep between checks (in seconds)              
sleeptime=600 

# file that contains current battery level as integer between 0 and 100       
cfi=/sys/class/power_supply/battery/capacity 
# file that contains 1 if we're plugged in to AC, 0 if not          
acfi=/sys/class/power_supply/battery/subsystem/ac/online 

# if either file doesn't exist, just do normal sleep+boot          
[ ! -f $cfi ] && sleep $sleeptime && /system/bin/reboot 
[ ! -f $acfi ] && sleep $sleeptime && /system/bin/reboot 

# populate capacity and AC variables               
c=`cat $cfi` 
ac=`cat $acfi` 

# stop loop if we're not plugged into AC              
until [ "$ac" -eq 0 ] 
do 
    # if capacity above threshold, boot up              
    if [ "$c" -gt "$bthresh" ]; then 
    /system/bin/reboot 
    fi 

    # wait some time before next check               
    sleep $sleeptime 

    # update capacity and AC variables               
    c=`cat $cfi` 
    ac=`cat $acfi` 
done 
1

non è possibile senza radicamento del dispositivo

0

Se il dispositivo è spento, non c'è modo per eseguire il software di qualsiasi tipo su di esso.

+0

OP detto "quando la carica della batteria supera una certa percentuale" - significa che lì è potere –

0

L'avvio di un dispositivo è un'attività hardware e deve essere presente una potenza fisica per eseguire il dispositivo (qui premendo il pulsante di accensione). quindi non puoi farlo con il codice. ci dovrebbe essere un potere fisico.

+0

OP detto "quando la carica della batteria supera una certa percentuale" - significa che c'è energia –

-1

L'ultima volta che ho controllato il rooting è "legale" ed è necessario per farlo.

Ad esempio, questo file /system/bin/battery_charging potrebbe trovarsi sul dispositivo. Modificarlo per contenere

#!/system/bin/sh 
/system/bin/reboot 

e impostare alcuni permessi

chmod 0755/system/bin/battery_charging 
chown root.shell /system/bin/battery_charging 

Tratto da qui: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected

2

Non ho una soluzione che non sia dipendente dall'hardware e non implichi il rooting del dispositivo.

Questa risposta ha il solo scopo di chiarire alcuni equivoci.

"il dispositivo viene spento, non c'è modo per eseguire il software di qualunque tipo sopra"

Questo è vero e falso. Innanzitutto, nessun dispositivo moderno è mai veramente "spento". A volte, il pulsante di spegnimento è solo per lo spettacolo (ad esempio la tua TV). A volte il processore è davvero spento ma i circuiti aggiuntivi sulla scheda madre sono ancora alimentati a una corrente di mantenimento. In secondo luogo, questa circuiteria aggiuntiva può alimentare il processore e gli altri circuiti di riserva in determinate circostanze, come la riattivazione di un evento esterno (ad esempio il collegamento del cavo di ricarica) o quando un timer di spegnimento del processore raggiunge lo zero.

L'unico modo per spegnere realmente un dispositivo moderno, ad esempio uno smartphone, è rimuovere la batteria e il cavo di alimentazione. E anche quello a volte non funziona come una piccola batteria o condensatore a bassa perdita potrebbe essere sulla scheda madre per preservare alcuni stato operativo.