質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4839閲覧

iOS/Swiftで、バッテリー容量(へたり具合)を取得したい

kazy1981

総合スコア44

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/23 23:27

###前提・実現したいこと
iOSアプリでバッテリーのへたり具合を取得したく思います。
バッテリーチャージではなく、バッテリー容量です。

アップルストアのアプリで、類似アプリがあるのでできるはずなのですが、意外にサンプルコードがなかなか見つかりませんでした。

https://i-bitzedge.com/ios-apps/battery-life

http://www.lifehacker.jp/2015/11/151114iphone_coconutbattery.html

###試したこと
同じ質問がstackoverflowに英語でありますが、1年前で解決に至っていません。

http://stackoverflow.com/questions/35368334/ios-accessing-battery-current-and-maximum-capacity-mah

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

アップルストアのアプリで、類似アプリがあるのでできるはずなのです

とても興味深いアプリですね
battery voltageと
temperature(本当にバッテリーの温度でしょうか?)

specではbattery level とstatusしかAPIでは取得できませんね

どうやって電圧と温度を取り出しているのでしょう?

battery充電には必ず充電電流、電圧を監視するデバイスが存在して
モニターしています
そのモニタリングデータは何らかの形で内部で使用されているはずです
別な形で表に出ているとも考えられます

https://github.com/nst/BatteryChart
こちらのアイディアとしては以下の情報をログから取り出すわけですが

[1] UIStatusBarServerThread StatusBarData -> batteryCapacity
[2] -[OSDBattery _getBatteryLevel]
[3] -[UIDevice batteryLevel]
[4] -[OSDBattery _getBatteryCurrentCapacity]
[5] -[OSDBattery _getBatteryMaxCapacity]
[6] -[OSDBattery _getRawBatteryVoltage]
[7] IOKit IOPSGetPowerSourceDescription CurrentCapacity / MaxCapacity

lithium ion batteryのCC-CV充放電カーブから推測しているのではないかと想像します

問題は、AppleのAPI以外を使わずに可能なのかというところです
OSDBatteryは使えないようなので

Androidでは確かこのような事をしている例がありましたが
そもそもAndroidではAPIで情報を結構取得できます

意外にサンプルコードがなかなか見つかりませんでした。

Rejectされない方法でこれを実現するには...

あくまで想像ですがiPhoneの場合は機種がそれほどAndroidに比べればありません
機器からサンプルデータを取ってAPIでとり出せるbatter levelと相関を取っているのかもしれません

投稿2017/02/24 04:36

aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazy1981

2017/02/28 22:54

ご回答ありがとうございます! UIdeviceListnerではヘタリ具合は取得可能なんでしょうか?(ちなみになぜそう思われたのでしょうか?) もし可能であるならば、objective-cは使ったことないのですが、swiftから呼び出すように自分でやってみたいとは思っておりますが。。
kazy1981

2017/03/03 05:26

ありがとうございます! objective-cは使ったことないのですがちょっとやってみることにします(でも本当にswiftでは出来ないとするとappleがobjective-cサポートしなくなった瞬間に出来なくなってしまうのでしょうが。。)
aja

2017/03/03 12:07

頑張って見てください 私はこのAPIでここにある というところまでは見ていませんので... Objective-Cで色々なAPIが非推奨になって行ってますのでねー
aja

2017/04/19 00:55

Closeになりましたが、できましたか?これで可能かどうかというのは他の人にも有用なので...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問