Hatena::ブログ(Diary)

obfuscatism このページをアンテナに追加

2011-10-16 Android 2.2以降で画面ロックにタイムアウトを設定するアプリを作成

Android 2.2以降で画面ロックにタイムアウトを設定するアプリを作ってみた

スマートフォンAndroid)のロック機能で、画面の電源をオフにした直後に有効になってしまうことが不便と感じませんか? 私はかつてAutoLockというような名前のアプリケーションを愛用していたのですが、コレはAndroid 2.2以降だとうまく動作しないようです。

また、CyanogenModのようなカスタムROMに画面ロックのタイムアウト時間を変更できる機能が標準で搭載されていますが、標準のAndorid端末にはなぜかそんな機能が搭載されていません*1

というわけで、自分がそんなアプリが欲しくなったので、自分で作成し、公開してみました。以下はアプリの紹介ページです。

LockAdmin - Android マーケットのアプリ

f:id:obfuscation:20111016182103p:image:medium:left

f:id:obfuscation:20111016182104p:image:medium

実装

実装にあたっては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の標準的な仕様なのかそれともメーカー毎の仕様なのかという詳しい原因の追及はできていません。

naoya2knaoya2k 2011/11/04 00:39 このアプリがアンインストールできないので困っています。アンインストールするためにはこのアプリのDevice Administratorをremoveする必要があるのですが、そのremoveができる権限を持っているのはこのアプリだけで、かつこのアプリにはremoveする機能がないからです。なので、
・onCreateで毎回ADDするのをやめて、delay_enableのチェックボックスがonのときだけADDするようにする。
・delay_enableのチェックボックスがoffにされたときにDevicePolicyManager#removeActiveAdmin(ComponentName)を呼び出すようにする。
といったあたりを実装すればアンインストールできるバージョンが作れるのではないかと思います。それを速やかにMarketにuploadして以前のバージョンからバージョンアップし、以前のバージョンをインストールした人もアンインストールできるようにしてくださいませんか。お願いします。「謎」で済ませられる問題ではないと思います。

obfuscationobfuscation 2011/11/04 01:38 アプリケーションの説明にも書いていますが、Androidの設定画面(セキュリティ)のデバイス管理者から削除できるのですが、そちらは既に確認されていますか? 私の方では、Android 2.2、2.3、3.2でデバイス管理者から削除できることは確認していますが、それでも削除できないのでしょうか? もしそうなのでしたら、コメント頂いた件で修正してアップデートしたいと思います。
「謎」と記述しているのは、Stackoverflowのリンクの記述にもある通り、AndroidのロックタイムアウトのふるまいがAndroid端末によって一定でなく、動作しない端末も存在することを書いています。なお、Android Marketの開発者を登録しているため、私から確認できる情報ですが、一度このアプリをインストールしてからアンインストールしたというユーザ数が5割ほどいるようです(といっても、インストールした数は20ちょっと超えた程度ですが)。

obfuscationobfuscation 2011/11/04 01:47 デバイス管理者の削除手順としましては以下のようになります。Android Marketの説明が不十分というのはあります。すみません。
「設定」→「現在地情報とセキュリティ」→「端末管理者(デバイス管理)」
http://stackoverflow.com/questions/5387582/how-to-remove-an-app-with-active-device-admin-enabled-on-android

naoya2knaoya2k 2011/11/04 08:28 すみませんでした。たしかにおっしゃるとおり「デバイス管理者」のメニューで解除できました。ちゃんと説明読んでなくてすみません。
(Marketのレビューも修正しておきます

私のSO-01Cでもロックの動作は期待通りではないようなので、なにか上手く動かせる方法がみつかるといいですね…

2011-04-18 PFIインターンへ行ってきた(後編)〜その心〜

PFIインターンへ行ってきた(後編)〜その心〜

本エントリはPFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整えてきた - obfuscatismの後編。インターンでやったことは前編を参照してもらうとして、後編ではインターンのきっかけ、参加する上での私の心境だとか、非技術的だけどチーム開発で必要かもしれない行動方針・環境適応のためのライフハック的なこと、インターンで知ったデザインドキュメントについて紹介する。締めのまとめは、ほとんど書かない方針で!

勝手気ままに書いていくので、エッセイみたいな感じで、役に立つかとか読む人を選ぶ文章かもしれないので、最初に断っておこう。構成としては以下のような感じ。

まあ、私の思考をトレースしていくと、こんな人間ができあがるというか、インターンのきっかけから、インターンが終わるまでの思考などを混ぜてみた内容となっている。インターンの面接とか、チーム開発のプロセス云々については書いていない*1

続きを読む

*1開発プロセスについて書かない=良かった、と思えたということ。逆に言えば、良かったけどどう良かったか私の着眼点が低いから認識できた点が少ないのかもしれないが...

2011-04-10 PFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整え

PFIインターンへ行ってきた(前編)〜結合テストの自動化環境を整えてきた〜

2011年3月1日〜3月31日の間、PFIインターンに行ってきた。本エントリは前編、後編にわけて書いてみようと思う。前編の今回はインターンの内容、インターンで開発した内容や設計、設計に至るプロセスやら私の成果について説明し、後編ではインターンのきっかけやインターンを実行する段階での私の心境、心構え、行動思想的な部分、環境適応やら震災云々について書こうと思う。

インターンの内容、その対象について説明し、どういう部分に悩みながら開発していったか紹介する(長いけど!)。最後に最終的な成果であるテストツールについて紹介し、社内でのインターン最終発表スライドで本エントリである前編を締める。

続きを読む

2010-12-20 Kernel/VM Advent Calendar 14日目: Xen 4.0 blktap2の話をしよう

これから「Xen 4.0 blktap2」の話をしよう

ご無沙汰しています。Advent Calendarと呼ばれる1日1エントリずつブログ書くイベントに参加することになったので、急遽技術ネタを用意してみた次第です。

カーネル/VM Advent Calendar : ATND

それでは、Xen 4.0から搭載された「blktap2」について紹介してみましょう。

続きを読む

2010-12-05

[] 本日のバイナリエディタ

 Qt Designerを使ってGUIフォーム(Window = Widget)を作成。タブに対応。

 これからファイルメニュー、ツールバー、スクロールバーなどの実装を。1つのドキュメント(ファイル)に対して複数のView(Single Doc Multi View)にも後ほど対応する。