2011年8月6日土曜日

Notificationのステータスバーアイコンを非表示にする方法

通知領域に通知は表示したいけどステータスバーには表示させたくない、通知をショートカットの用途として使用する場合の実装です。
Quick Settings や Skip Memo などでオプションで選択できますね。
UnKeyLockerで使用するためにその方法を探していたのですが、そのものズバリを説明しているサイトが見つけられなかったので書きます。


実際には見えなくなるだけでアイコン1つ分の領域を使用します。
Notificationのiconとwhenを以下のように設定します。
// 見えないアイコンをセット
notification.icon = R.drawable.ico_invisible;
// アイコンを右に寄せる
if (android.os.Build.VERSION.SDK_INT < 9)
 notification.when = Long.MAX_VALUE; // v2.3 未満
else
 notification.when = Long.MIN_VALUE; // v2.3 以上

ico_invisibleは単色の透過pngを使用しています。
このアイコンよりも右側にアイコンが表示されると隙間が開いて見栄えが悪くなってしまうためnotification.whenを指定して右に寄せます。
OSのバージョンが2.3未満と2.3以上でwhenによるソート順が逆になっているようなのでandroid.os.Build.VERSION.SDK_INTでSDKのバージョンを調べて条件分岐しています。
デフォルトのcontentViewを使用すると通知領域のアイコン非表示&whenの指定がでたらめなのでカスタムviewを使用したほうが良いと思います。

こんな感じ
Notification notification = new Notification()
Intent intent = new Intent(context, 起動するクラス);
intent.putExtra(FLAG, ””);
PendingIntent i = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;

RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.notification_layout);
ico = R.drawable.ico_unlocked_black;
contentView.setTextColor(R.id.title, Color.BLACK);
contentView.setTextColor(R.id.text, Color.BLACK);

contentView.setImageViewResource(R.id.image, ico); // 通知エリアに表示するアイコン
contentView.setTextViewText(R.id.title, context.getString(R.string.app_name));
contentView.setTextViewText(R.id.text, context.getString(R.string.toEnable));

notification.contentView = contentView;
notification.contentIntent = i;

// 見えないアイコンをセット
notification.icon = R.drawable.ico_invisible;
// アイコンを右に寄せる
if (android.os.Build.VERSION.SDK_INT < 9)
 notification.when = Long.MAX_VALUE; // v2.3 未満
else
 notification.when = Long.MIN_VALUE; // v2.3 以上

mgr.notify(NOTIFI_ID, notification);
間違いなどあればご指摘ください。

2011年8月5日金曜日

UnKeyLocker [ロック解除時に有効化] [ショートカットの設定] [ポップアップ通知設定] [高度な設定]

残りの設定項目の説明です。

ロック解除時に有効化
スクリーンロックを手動で解除したときにUnKeyLockerを有効にし、それ以降スクリーンロックが表示されないようにします。
常にロックを解除して使う人にはあまり関係がないかもしれません。
自動ロック機能を使う人や、手動でロックを有効(UnKeyLockerを無効)にする人はチェックを入れておくと一手間省けます。

ショートカットの設定
通知エリア(ステータスバー)に表示するショートカットの設定を行います。
表示する
- 通知エリアにショートカットを表示します。
ステータスバーにもアイコンが表示されUnKeyLockerの有効/無効すぐに確認できます。
表示する(アイコン非表示)
- 通知エリアにショートカットを表示します。
ステータスバーにはアイコンは表示されないので画面がすっきりします。
表示しない
- 通知エリアにショートカットは表示されません。
有効/無効を切り替えるにはアプリ一覧からUnKeyLockerを起動するか、Home画面にショートカットを作成して(Home画面でロングタップ)Home画面から切り替えてください。

ポップアップ通知設定
UnKeyLockerによってスクリーンロックが無効/有効になったときにポップアップ(トースト)でお知らせします。


高度な設定
Androidではメモリの空き容量や起動時間によってはOSによってアプリやサービスが自動で終了させられてしまいます。UnKeyLockerが終了するとロックが有効になってしまいます。OSに勝手に終了させられないように定期的にUnKeyLockerを呼び出しています。
OSに終了させられてもしばらくすると(30秒前後)自動的にUnKeyLockerが呼び出され、再びロックは無効になります。


作者の設定
ロック解除時に有効化: on
ショートカット(停止中): 表示しない
ショートカット(起動中): 表示する
ポップアップ通知: 両方なし

高度な設定-再起動間隔: 再起動しない

2011年8月4日木曜日

UnKeyLocker 設定項目 [自動ロックの設定]

タイマーで自動的にロックを有効にしたい場合に設定します。
メール中などに間隔が開いて、ロックを解除したままになるのが不安な人などはぜひ使ってください。
常にロック解除で使いたい人、忘れずに手動でロックを掛ける という人は必要ないでしょう。

端末権限
自動ロックを有効にする
自動ロック機能を使いたい人はチェックを入れてください。
チェックが入っていない場合は画面消灯中にUnKeyLockerがタイマーで終了しても最初に画面をつけたときはロックがかかっていません。

画面消灯からの時間でロック
メール中など頻繁に画面をON/OFFしているときはロックを無効にしたいけどしばらく操作しなければ再びロックを掛けたい、という人はチェックを入れてください。
画面がOFFになるとタイマーが起動し、設定した時間が経過するとロックが掛かります。
設定した時間が経過する前に画面がONになるとタイマーはリセットされます。
例)
設定時間: 10分
画面OFF → 8分後に画面ON ロックされず、すぐに操作できます。
画面OFF → 11分後に画面ON ロックされ、スライドロックやパターンロックを解除しないと操作できません。

UnKeyLocker起動からの時間でロック
利用シーンが具体的に思い浮かびませんが、長時間ロックが無効にするのが不安な方はチェックを入れてください。
UnKeyLockerが有効(スクリーンロックが無効)になってからの時間経過でロックが掛かります。

作者の設定は
自動ロックを有効にする にチェックを入れて画面消灯からの時間でロック(60分)で使用しています。


2011年8月3日水曜日

UnKeyLocker 設定項目 [端末起動時の動作]

UnKeyLockerの設定項目の説明です。
参考までに作者の設定も載せようと思います。

端末起動時の動作
・起動時にロックを解除
端末が起動したときにUnKeyLockerを有効(スクリーンロックを無効)にします。
タイムラグがあるため起動直後はロック画面が表示されてしまいます。

・電源OFF時の動作を維持
電源を切ったときにUnKeyLockerが有効になっていたらロックを解除
無効になっていたら通知エリアにショートカットを配置します。停止中のショートカットの設定が"表示しない"の場合は何も起こりません。

・何もしない
何もしません。

作者は 「端末起動時にロックを解除」と「電源OFF時の動作を維持」を行ったり来たりしています。

UnKeyLockerをアップデートしました ver 1.1.3

この投稿を記入時には「更新情報」はアップデートされていますが、アプリ自体はver 1.1.2のままです。
アプリのアップデートに遅延があるのはいいですが説明文の更新タイミングも合わせてほしいですね…

ver 1.1.3
* 一部の設定が初期化されます。
- アイコンとテキストの色を別々に選べるようにしました。
- 端末起動時の動作を (起動時にロックを解除/電源OFF時の動作を維持/何もしない)に変更
- 通知アイコンの微修正
- 説明文の一部を変更
- バグフィックス