私はできる限り多くの調査を試みましたが、このかなり単純な質問に対する答えを見つけることができません(SDKとすべてをセットアップする前にこれを理解したいと思います)。最初のアプリで、BatteryManager
のBATTERY_STATUS_CHARGING
にget
関数のみが含まれているのか、それともset
関数も含まれているのか疑問に思っています。
(USB経由で)充電器からプラグを抜かずに手動で電話の充電を停止できるアプリを作成したくないので、これが実際に可能かどうか疑問に思っています。
いいえ、ルート化されていないデバイスでは不可能です。それは使用しています Settings.System
とADB_ENABLED
、 だが ADB_ENABLED
は、アプリケーションで変更できないセキュアシステム設定です。
はい、それは根ざした電話で行うことができます。
権限を追加する必要がありますAndroid.permission.WRITE_SECURE_SETTINGS.
Google Playの同じタイプのアプリケーション: https://play.google.com/store/apps/details?id=com.jim2&hl=en
私はこのスレッドが古いことを知っていますが、後でここに到達する誰かのためにとにかく私のansを投稿します。これを試してください:-echo 0 > /sys/class/power_supply/batterycharging_enabled/charging_enabled
これは残念ながら不可能です。 Androidには、バッテリーデータの読み取りAPIのみがあります。ADB_ENABLEDは、USB経由のデバッグを有効にするためだけなので、このインスタンスでも役立ちません。
バッテリー充電制御は、AndroidカーネルおよびバッテリーICモジュールの内部にあります。メーカーは随時それを変更しますが、ルートやIC(統合チップ)モジュールを制御しないアプリでは利用できません。ほとんどすべてのデバイスで実際に異なるいくつかのトリッキーなインターフェースを介して!
せいぜい、運が良ければ、sysfsインターフェイスがそれを助けるかもしれませんが、やはりrootが必要で、デバイスごとに異なる場合があります。
以下のコマンドを使用して、USBに接続したときにモバイル/ハンドヘルドの充電を停止します。
adb Shell dumpsysバッテリーセットac 0; dumpsysバッテリーセットusb 0;