まだ風邪が治らない。

やべえ。

今、このREGZA Phone T-01Dを使っていろいろなアプリケーションのソースを見ているのですが、

ナビゲーションバーにあるアイコンが増やせることが非常に楽しいですね!

SystemUI/res/layout/navigation_bar.xmlの記述を変えることにより、ナビゲーションバーの配置や数を変えることが出来ます。

こちらに、navigation_bar.xmlの詳細を記述しています。

・ 5つに増やしたナビゲーションバーの詳細

navigation_bar.xmlの中身を見てみると、以下のような記述が想像できます。
Baidu IME_2012-12-2_16-21-30

ちなみに、一番右の40dpのスぺースにはメニューキーが割り当てられていました。
T-01Dにはメニューキーは物理キーに存在するため、消しています。

戻るとホームのキーも実際物理キーに存在はしていて、何故消していないのかといいますと、

なんとなくです。笑

また、KeyCodeというのが割り当てられていますよね?実はこれ、自分でプログラミングしてjavaファイルの編集をしなくてもキーコードを割りあてるだけで処理が行われるという優れモノです!

javaファイルの編集は出来ないし、逆コンパイルして得られるファイルはsmaliファイルなので自分でプログラムを作成できませんが、処理を割り当てることが出来ちゃうんです。

KeyCode=3なら、ホーム
KeyCode=4なら、戻る

といったように、数字を変えることによって、割り当てる処理を変えられます。

ちなみに、キーコードを指定しているファイルは、
参照:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/KeyEvent.java

こちらに載っています。

確かに3と4は戻るとホームに割り当てられていますね(´∀`)

ここでナビゲーションバーに配置して使えそうなキーコードを紹介しておきます。
public static final int KEYCODE_POWER = 26;
public static final int KEYCODE_CAMERA = 27;
public static final int KEYCODE_EXPLORER = 64;
public static final int KEYCODE_ENVELOPE = 65;
public static final int KEYCODE_FOCUS = 80;
public static final int KEYCODE_MENU = 82;
public static final int KEYCODE_NOTIFICATION = 83;
public static final int KEYCODE_SEARCH = 84;
public static final int KEYCODE_PAGE_UP = 92;
public static final int KEYCODE_PAGE_DOWN = 93;
public static final int KEYCODE_MOVE_HOME = 122;
public static final int KEYCODE_MOVE_END = 123;
public static final int KEYCODE_SETTINGS = 176;
public static final int KEYCODE_APP_SWITCH = 187;

結構あったら便利な機能ばかりなので自分の好みに合わせてキーコードを割り当てれば、オリジナルなナビゲーションバーが作成できます。

僕は、上記の数値をすべて72dpに設定し、5つのボタンを等間隔で置いています。

アイコンも自作です。笑

device-2012-12-02-164727.png

検索キーと電源キーを置いています。それぞれKeyCodeとして84と26を割り当てるようにしました。
また、画像もic_sysbar_search.pngとic_sysbar_power.pngを作成しました。

個人的には通知バーの開閉を取り付けたいんですが、smaliファイルのどこにどんな記述をすればいいのかがわからなくて断念しました。笑

キーコード83が実に気になりますね。
ちなみにKeyCode83を割り当てると、SystemUI.apkが読み込まれなくなり、ステータスバーがなくなります。

また、必要なのかはわかりませんが、SystemUI/smali/com/android/systemui/statusbar/phone/NavigationBarView.smaliを開いてください。

.method public getHomeButton()Landroid/view/View;
.locals 2

.prologue
.line 78
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/NavigationBarView;->mCurrentView:Landroid/view/View;

const v1, 0x7f0f0012

invoke-virtual {v0, v1}, Landroid/view/View;->findViewById(I)Landroid/view/View;

move-result-object v0

return-object v0
.end method

というような記述があると思います。

これをそのままコピペして赤いところのボタン名だけ変えて貼り付けたらいいと思います。
getSearchButtonやgetPowerButtonなど?

これは果たして本当に必要なのか・・?笑

あとは再コンパイルして端末の中にSystemUI.apkを突っ込んでやればナビゲーションバーが変わっているはずです。

◆関連記事

5つに増やしたナビゲーションバーの詳細

おすすめの記事