[Q5]電源OFFダイアログ
自分でビルドしてから、どうしても困ることがあった。
電源OFFだ。
SmartQ5にはボタンが4つ(リセット以外)があり、その1つが電源ボタンだ。
電源をOFFにするときには長押しすると、サイレントモードにしたり、電源OFFにしたりの選択肢が出てくる。
今のビルドでは電話系のものを組み込んでないため、電源OFFしか出てこない。
そこで電源OFFを選択すると、本当にいいのか聞いてくる。
そのダイアログでYESにすると、シャットダウンが始まって、電源OFFになる。
自分でビルドした場合、長押しするとダイアログが出てくるのだが、それと同時にバックライトも消えてしまうのだ。
他のボタンを押すと点灯するので、また長押しして、消える。
何度かやっているとうまくダイアログが表示されるのだが、そこで電源OFFを選んでも、今度は次の確認ダイアログで同じようなことが起こる。
そうやって嫌になり、リセットボタンを押してしまうのだ。
そもそも、電源OFFダイアログはどこで制御されているのか?
意外ッ! それはphone_policyッ!!
PhoneWindowManager.javaにあった。
正確には電源OFFダイアログではなく、キーの長押しだ。
interceptKeyTq()という関数で受け取っている。
Tqは、Queue Threadのことらしい。
そこでスリープしそうなところをコメントアウトしたら、直った。
ついでに書いておこう。
電源OFFを聞いてくるダイアログは、PowerDialog。
これは、phone_policy。
その次のシャットダウンを確認するダイアログは、ShutdownThread。
これは、frameworks。
同じように見えて実現している箇所が違うので、探すとき忘れないようにしよう。

コメント