2016-01-04 9 views
5

私はソーラー充電器に接続されたスマートフォンを持っています。 日によって、正しく電源が供給されています。しかし、夜の間、時にはそれはエネルギーの不足のためにそれ自身をオフにする。Android:プログラムでデバイスをオンにする

私の質問です:バッテリーの充電が一定の割合を超えたときにプログラムで戻すことは可能ですか? 私はきれいで合法的な方法を探しています。私は欠陥や悪用には興味がありません。 公式文書には何も見つかりませんでした。ありがとうございました。

+0

その時点で実行中のユーザコードやOSがないので、不可能です。 –

+2

@SamKuhmonen - どのように課金動画が表示されるのですか? –

+0

面白い問題...私は解決しようとしているのと同じような状況があります。我々はこれをXDAで議論している、ここにリンクがある:http://forum.xda-developers.com/showthread.php?t=1187631&page=7 – portsample

答えて

3

メカニズムは、デバイス中に実行された電池アニメーションスクリプトを、交換に依存しています電源が切られているがプラグが差し込まれており、通常は充電用バッテリのアイコンが表示されます。スクリプトの名前はデバイスによって異なりますが、一般的に/system/binディレクトリにあります。サムスンのデバイスは一般的にplaylpmというスクリプトを呼び出し、私が見たスクリプトの他の名前にはipodlpm、およびbattery_chargingが含まれています。これは標準のAndroidフレームワークの外にあるため、すべてのデバイスで必ずしも機能するわけではありません。一部のデバイスには同等のスクリプトがないか、別の方法で実装する可能性があります。

これはルートを必要とし、AndroidフレームワークレベルではなくLinuxレベルで動作するという「悪用」として特徴付けることができますが、現在のところ、この動作を実装するための代替手段はありません。

この変更を行う一般的なメカニズムについては、https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connectedを参照してください。もちろん、これを行う前に、以前のバッテリーアニメーションスクリプトをバックアップすることをお勧めします。

次のスクリプトは、複数のデバイス(いくつかのSamsungデバイスとVerizon Ellipsis 7)で私の仕事をしてくれました。基本的には、電話機がAC電源に接続されているかどうかを確認し、十分な充電があるかどうかを確認します。そうなら、起動します。そうでない場合は、N秒待ってから再試行します。副作用として、オリジナルのバッテリーアニメーションスクリプトは実行されず、きれいなアニメーションを見ることはありません。

#!/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

ない可能性のあるデバイスの電源がオフの場合は、デバイス

0

を応援せずに、その上に任意のタイプのソフトウェアを実行する方法はありません。

+0

OPは "バッテリーの充電が一定のパーセンテージを超えた時"と言っている - そこを意味するは電源 –

0

デバイスの起動はハードウェアタスクであり、デバイスを実行するための物理的な電源が必要です(ここでは電源ボタンを押してください)。コードでこれを行うことはできません。物理的な力があるはずです。

+0

OPは "バッテリーの充電が一定のパーセンテージを超えたとき"と言います - 電源があることを意味します –

-1

最後に、私はルーティングをチェックしたことが「合法」であり、これを行う必要があります。

たとえば、このファイル/system/bin/battery_chargingは、お使いのデバイスに配置されている可能性があります。

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

が含まれており、いくつかの権限ここから撮影

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

を設定し、それを編集します。これを行うためのhttps://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected

2

私は、ハードウェアに依存しないソリューションを持っていませんし、デバイスを根絶することはありません。

この回答は誤解を明確にするためのものです。

「デバイスの電源がオフされ、その上の任意のタイプのソフトウェアを実行する方法はありません」

これが真と偽の両方です。まず、現代のデバイスは本当に "オフ"にはなりません。場合によっては、オフボタンはショーのためだけのものです(テレビなど)。ときにはプロセッサの電源が実際に切れていますが、マザーボード上の追加回路には依然として電流が流れています。第2に、この追加の回路は、外部事象の起床(例えば、充電コードの差し込み)やプロセッサ外のタイマがゼロになったときなど、特定の状況下でプロセッサおよび他の回路をバックアップすることができる。

実際にスマートフォンなどの最新のデバイスの電源を切る唯一の方法は、バッテリーと電源コードを取り外すことです。また、小さなバッテリや低リークのコンデンサがマザーボード上にあり、動作状態を保持することがあるため、動作しないことがあります。

関連する問題