2011-10-16 Android 2.2以降で画面ロックにタイムアウトを設定するアプリを作成
■Android 2.2以降で画面ロックにタイムアウトを設定するアプリを作ってみた 
スマートフォン(Android)のロック機能で、画面の電源をオフにした直後に有効になってしまうことが不便と感じませんか? 私はかつてAutoLockというような名前のアプリケーションを愛用していたのですが、コレはAndroid 2.2以降だとうまく動作しないようです。
また、CyanogenModのようなカスタムROMに画面ロックのタイムアウト時間を変更できる機能が標準で搭載されていますが、標準のAndorid端末にはなぜかそんな機能が搭載されていません*1。
というわけで、自分がそんなアプリが欲しくなったので、自分で作成し、公開してみました。以下はアプリの紹介ページです。
実装
実装にあたってはAndroid 2.2(API Level 8)以降から提供されている、Device Administrationという機能の一部(ロックに関すること)を利用しています。次のページで解説されてある"Maximum inactivity time lock"というのを、DevicePolicyManagerクラスのsetMaximumTimeToLockを呼び出して実現しています。
http://developer.android.com/guide/topics/admin/device-admin.html
ソース公開
特に隠すほどでもないので、公開しています。ライセンスは未定。
https://github.com/suma/LockAdmin
参考
DevicePolicyManagerの利用法がよくわからず、参考にさせてもらいました。
androidで画面をロックする方法がよく分からない。 - よせばいいのに
端末(機種)によっては動作しない可能性とか
android - How to set maximum time to lock? - Stack Overflow
謎。
*1:2011/10/30追記:先日Androidタブレット(Eee Pad Transformer TF101)なるものを入手しましたが、Android 3.2では画面ロックのタイムアウトが設定可能でした。しかしそのタイムアウトが有効なのは自動でスクリーンの電源が切れたときのみ有効で、手動で電源ボタンを押して画面電源を切って即座に画面電源を入れたときにはロック画面が表示されていました。またAndroid 2.2系の端末機種によっても、手動で電源を切っても設定したタイムアウトが有効な場合があったり、なかったりして、Androidの標準的な仕様なのかそれともメーカー毎の仕様なのかという詳しい原因の追及はできていません。
2011-04-18 PFIインターンへ行ってきた(後編)〜その心〜
■ PFIインターンへ行ってきた(後編)〜その心〜 
本エントリはPFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整えてきた - obfuscatismの後編。インターンでやったことは前編を参照してもらうとして、後編ではインターンのきっかけ、参加する上での私の心境だとか、非技術的だけどチーム開発で必要かもしれない行動方針・環境適応のためのライフハック的なこと、インターンで知ったデザインドキュメントについて紹介する。締めのまとめは、ほとんど書かない方針で!
勝手気ままに書いていくので、エッセイみたいな感じで、役に立つかとか読む人を選ぶ文章かもしれないので、最初に断っておこう。構成としては以下のような感じ。
- 2011年3月インターンのきっかけ(PFIインターンは2009、2010年の夏に開催していた)
- インターンに対する私の思惑
- インターンでの私の目標
- 短期間で開発効率を高めるために意識したこと
- インターンで知ったデザインドキュメントとは何か
まあ、私の思考をトレースしていくと、こんな人間ができあがるというか、インターンのきっかけから、インターンが終わるまでの思考などを混ぜてみた内容となっている。インターンの面接とか、チーム開発のプロセス云々については書いていない*1。
2011-04-10 PFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整え
■ PFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整えてきた〜 
2011年3月1日〜3月31日の間、PFIインターンに行ってきた。本エントリは前編、後編にわけて書いてみようと思う。前編の今回はインターンの内容、インターンで開発した内容や設計、設計に至るプロセスやら私の成果について説明し、後編ではインターンのきっかけやインターンを実行する段階での私の心境、心構え、行動思想的な部分、環境適応やら震災云々について書こうと思う。
インターンの内容、その対象について説明し、どういう部分に悩みながら開発していったか紹介する(長いけど!)。最後に最終的な成果であるテストツールについて紹介し、社内でのインターン最終発表スライドで本エントリである前編を締める。


・onCreateで毎回ADDするのをやめて、delay_enableのチェックボックスがonのときだけADDするようにする。
・delay_enableのチェックボックスがoffにされたときにDevicePolicyManager#removeActiveAdmin(ComponentName)を呼び出すようにする。
といったあたりを実装すればアンインストールできるバージョンが作れるのではないかと思います。それを速やかにMarketにuploadして以前のバージョンからバージョンアップし、以前のバージョンをインストールした人もアンインストールできるようにしてくださいませんか。お願いします。「謎」で済ませられる問題ではないと思います。
「謎」と記述しているのは、Stackoverflowのリンクの記述にもある通り、AndroidのロックタイムアウトのふるまいがAndroid端末によって一定でなく、動作しない端末も存在することを書いています。なお、Android Marketの開発者を登録しているため、私から確認できる情報ですが、一度このアプリをインストールしてからアンインストールしたというユーザ数が5割ほどいるようです(といっても、インストールした数は20ちょっと超えた程度ですが)。
「設定」→「現在地情報とセキュリティ」→「端末管理者(デバイス管理)」
http://stackoverflow.com/questions/5387582/how-to-remove-an-app-with-active-device-admin-enabled-on-android
(Marketのレビューも修正しておきます
)
私のSO-01Cでもロックの動作は期待通りではないようなので、なにか上手く動かせる方法がみつかるといいですね…