ワイヤード・パンチ

サイトレイアウトを変えてみました。よろしければアンケートにご協力ください。

Wakelock Detector [LITE] の使い方。

ここ最近、Android端末の電源の消耗がやけに激しいです。いったい何が電池を食っているのか、設定画面の電池のページを見てみると、「wakelock」という謎の名前がありました。さらに詳細を開いてみると、最後に充電を終えてから現在までとほぼ同じ時間も「スリープモードにしない」の状態が記録されていました。その原因を調べてみます。

広告

以下、手順はWindows10によるものです。

wakelockの原因を突き止めるアプリ。

今回は「Wakelock Detector [LITE]」というアプリを使います。これを起動させたあとに電池が消耗されるまでしばらく待っていると、何のアプリによってwakelockが使われたか判明するというものです。

ただ、使用するためにはPCとの接続が必要かつ様々なツールをインストールする必要があり、けっこう面倒です。PCとの接続がいらない[ROOT]バージョンもありますが、こちらは名前のとおり端末のroot化が必要です。root化すると様々なリスクが伴うらしいうえに、root化の作業自体もめんどくさそうなので、結局はどちらもあまり手間が変わらないかと。

USBデバッグを有効にする。

WLDを実際に使えるようにするための手順を記載していきます。ひとまずAndroidにWakelock Detectorをインストールしておきますが、USBデバッグを有効にしないと使えません。ただ、初期状態で有効にすることはできないので、特殊な手順を踏む必要があります。

設定画面を開き、一番下にある端末情報を開きます。

次もまた一番下まで移動して、ビルド番号と書かれた箇所をひたすら連打します。すると「あと○ステップ」とメッセージが出るので、0になるまで連打を終えると、「これでデベロッパーになりました!」とメッセージが出ます。それを確認してから1つ前の画面に戻ると、端末情報のすぐうえに開発者向けオプションという新しい項目があります。

今度は開発者向けオプションを開いて、その中からUSBデバッグを探します。USBデバッグをONしたら、PCとのUSB接続を行いましょう。

Chromeアプリをインストールする。

PC側からも操作する必要があり、それは専用のChrome拡張機能から行うことになります。Chromeのストアに「Unlocker for WakeLockDetector」があるので、インストールしましょう。

インストールが終わったら、Chromeアプリの一覧にアプリとして追加されるので、そこから起動します。ただ、最近のChromeはアプリ一覧への行くためのリンク自体がどっかに行ってしまったので、アドレスバーに「chrome://apps/」と入力した方が早いです。すると、見慣れたドロイドくんのアイコンが見つかります。

ドライバをインストールする。

実際にアプリを起動すると、Chromeの別ウインドウでアプリが起動します。ただ、他に必要なドライバをまだ入れていないためか、PCとAndroidをUSB接続しているのに「No devices found」、つまりChromeアプリからは端末が見つからないという状態になっています。よって、それらをインストールしていかなければなりません。

アプリのウインドウにもあるとおり、「Windows Adb driver」および「Adb Minimal Usb driver」という2種類のドライバのインストールが必要であり、それらをダウンロードするためのURLも書かれていますが、リンクが貼られておらず手入力もめんどくさいので、こちらでリンクを貼っておきます。

まずは「Windows Adb driver」のダウンロードですが、こちらは簡単。「here」のリンクをクリックすればすぐにダウンロードできます。できれば目立つボタンにしてほしいところですが。

次に「Adb Minimal Usb driver」のダウンロードですが、こちらはフォーラムになっているため少々探しにくい。まずページを少し下にいったところ、Downloadsと書かれた章があり、そこに「Download Version 1.4.1 Here」と書かれたリンクがあるので、それをクリックして次のページに進みます。(現時点での最新バージョンは1.4.1であり、のちに変わるかもしれません。)

別のサイトが開かれるので、今度は中央あたりにある「Begin Download」をクリック。ちなみに、周りには全然関係ないダウンロードボタンが広告として現れることがあるので、だまされないように注意しましょう。

しばらく待っていると複数のダウンロード先がすぐ下に表示されるので、いずれかをクリックしてダウンロードを開始しましょう。選んだダウンロード先によってダウンロードの速度が変わってくるのでしょうけど、インストーラーのサイズは大したことないので、どれを選んでも差はなさそうです。

あとはダウンロードした2種類のドライバをインストールするだけです。特に設定を変えずにインストールしてもかまわないはずです。

ドライバも入れ終わったし、これでアプリを使えると思ったのですが、Chromeを再起動しなおしても「No devices found」のまま。まだ何か足りないのでしょうか。

コマンドラインを使えるようにする。

Wakelock Detectorの取扱説明書のスライドがあったので、それを見てみます。すると2ページに「Press “Usb” icon to switch from usb to tcp-ip」という文章が。たしかにPCとAndroidをUSB接続したとき、MTPモードだったりカメラ写真だけ見れるモードだったり選べますが、TCP-IPってなんぞや?よって「android usb tcp-ip」みたいな検索ワードで調べてみると、今度は「adb tcpip 5555」というコマンドを使ったcmdのことがずらりと。

その「adb tcpip 5555」というコマンドをcmdから実行すればいいのか?わけもわからないまま、とりあえずcmdを起動して同じコマンドを入れてみましたが、そのようなコマンドはないだの何だの言われて実行できず。「adb」で始まるコマンドは上記のドライバを入れていればできるはずなのですが。

どうやら「adb」を実行するためには、さらにJDKとAndroid SDKのインストールおよび、環境変数の設定が必要でした。長くなるのでここでは書きません、下記のサイトにてわかりやすく解説されています。

Java(JDK)とAndroid SDKを導入してADBコマンドを使えるようにする | AndMem

なお、adbコマンドを使えるようにすること自体は必要な作業だったのですが、結果的には「adb tcpip 5555」を行う必要はありませんでした。

コマンドを実行する。

上記の設定を終えても相変わらず、Chromeアプリの画面は「No devices found」のまま。左上に「Kill Server」というボタンがあり、どこかに接続されているっぽいのでそれを押すと接続が切れて「Start Server」になり、今度はその「Start Server」を押して接続を開始しても、やっぱり「No devices found」のまま。

ただ、cmdに「adb」とだけ入れて実行してみるとコマンド一覧が現れ、「adb kill-server」「adb start-server」というコマンドがあることがわかりました。よってChrome側からではなく、cmd側から「adb kill-server」「adb start-server」の順で実行してみました。すると、今まで何の変化もなかったChromeアプリの画面に進展があり、Android端末がようやく認識されて次の処理を実行できるようになりました。

Android側でWakelock Detectorを起動した状態で、Chrome側の「Grant Battery stats」のボタンを押します。すると、最初は鍵マークだったボタンが、いいねによく使われる手のマークに変わり、これでやっとwakelockをしているアプリを見つけられる状態となりました。

あとは電池が減るのを待って、結果を見るだけです。(しかしこんなときに限って、電池の減りが遅い。)

長い時間スリープを解除したアプリは?

上記までの手順を終えて、Android側のWakelock Detectorの画面を開いた様子です。wakelockをしたアプリの一覧がずらずらと出てきますが、あらかじめ全タスクを終了させていたにもかかわらず、起動してしまったようです。その中で特に気になったものが2つ。

まずは「Video & TV SideView」、SONYのテレビやレコーダと連携できるアプリです。他のアプリだと起動時間が数秒で済んでいるのに、これだけ1分以上記録されています。ただ、起動回数の方は3回だけであり少なめ。

次に気になったのは「楽天でんわ」。こちらは逆に時間は0.9秒と短いものの、回数が114回とぶっ飛んでいます。電話が相手からかかってきたときは通常の電話アプリになるのに、なんで楽天でんわはこんなに裏で動く必要があるのでしょうか。

どれが本当の原因なのか、該当しそうなアプリを削除して以降の様子を確認するのが一般的ですが、普段は使わなくてもまれに使いたくなるアプリもあり、いったん削除してしまうとまた入れ直しが面倒なので、こういうときは「Greenity」というアプリを使って、他のアプリを休止状態にしておくのが良いようです。

とりあえず順番にアプリの休止を試していって、バッテリー食いの犯人は誰だったのか、数日かけて様子を見ていくことにします。

余談。そもそもUSB接続ができない?

ぼくは現在、FREETELの「Priori 3 LTE (FTJ152A)」という端末を使っているのですが、いつ頃からかPCとUSB接続しても、PC側が認識しなくなりました。なお、充電だけはされています。

下記のサイトに全く同じ症状について書かれており、解決方法もあるので、リンクしておきます。

Priori 3 LTEがPCでメディアデバイスとして認識されない場合の対処法 | ブログが書けたよ!