Xperia用に作られているSystemuUIを拝借してきまして、ちょちょいのちょいって感じでT-01D用に移植してみた。

これで調節バーによって画面の明るさを変えられるぜ!!

(まだ出来てません。考え中(||´Д`)o)

ここにXperia用のSystemUIがあります。

4.0.4用を一応もらってきまして、一体中がどうなっているのかを一通り見てみましたが、

res/layoutにquickpanel_brightness_settings.xmlがある。

このxmlの記述に、チェックボックスやシークバーなどがあるので、きっとこれが、照度バーまわりのレイアウト(見た目)を定義しているのだろう。

また、quickpanel_brightness_settings.xmlの注目しなければならない記述は、

@drawable/quickpanel_brightness_icon
@id/title
@id/brightness_slider
@id/automatic
@string/brightness_settings_automatic
@string/brightness_settings_title

こいつらを加えなければならない。

quickpanel_brightness_icon.pngをXperia用のSystemUIのdrawable-mdpiからとってきて、T-01DのSystemUIのdrawable-xhdpiまたはdrawable-mdpiに突っ込んでやる。

んで、書き加える箇所は、res/valuesのpublic.xml、ids.xml、strings.xmlの3つ。

strings.xmlの末尾に加える
<string name="brightness_settings_automatic">Fixed</string>
<string name="brightness_settings_title">Brightness</string>

ids.xmlの末尾に加える
<item type="id" name="automatic">false</item>
<item type="id" name="title">false</item>
<item type="id" name="brightness_slider">false</item>

public.xmlの末尾に加える
<public type="id" name="automatic" id="0x7f0f009d" />
<public type="id" name="title" id="0x7f0f009e" />
<public type="id" name="brightness_slider" id="0x7f0f009f" />
<public type="layout" name="quickpanel_brightness_settings" id="0x7f0f00a0" />
<public type="string" name="brightness_settings_title" id="0x7f09008f" />
<public type="string" name="brightness_settings_automatic" id="0x7f0f008e" />

public.xmlの0x7-------のところは、各自で重複のないように合わせる必要があります。他の番号と連番じゃないとコンパイルエラー出てくるときがあった。

smali/com/android/systemui/statusbar/quickpanelの中身が怪しい。

BrightnessSettingsView$1
BrightnessSettingsView$AutomaticObserver
BrightnessSettingsView$BrightnessObserver
BrightnessSettingsView

の4つがありますが、BrightnessSettingsView.smaliを見てみる。

多分、やらないといけないことは、BrightnessSettingsView.smaliに記述されているリソース番号をT-01D用に変えること。

というわけで、すぱっと変更していく。

255行目:const v1, 0x7f080095をconst v1, 0x7f09008fに変更
262行目:const v1, 0x7f080096をconst v1, 0x7f0f008eに変更
319行目:const v1, 0x7f0e0097をconst v1, 0x7f0f009eに変更
330行目:const v1, 0x7f0e0098をconst v1, 0x7f0f009fに変更
376行目:const v1, 0x7f0e0099をconst v1, 0x7f0f009dに変更

res/layout/status_bar_expanded.xmlに以下を追加(追加場所によってバーの場所が変わる)

<com.android.systemui.statusbar.quickpanel.BrightnessSettingsView android:orientation="vertical" android:background="#66000000" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0">
<ImageView android:gravity="center_vertical" android:id="@android:id/icon" android:layout_width="48.0dip" android:layout_height="48.0dip" android:layout_marginLeft="8.0dip" android:src="@drawable/quickpanel_brightness_icon" />
<TextView android:textSize="12.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/title" android:background="@null" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:text="@string/brightness_settings_title" />
<SeekBar android:gravity="center_vertical" android:id="@id/brightness" android:paddingLeft="15.0dip" android:paddingTop="10.0dip" android:paddingRight="18.0dip" android:paddingBottom="10.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" />
<CheckBox android:textSize="12.0dip" android:textColor="#ffffffff" android:gravity="right|center" android:id="@id/automatic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10.0dip" android:text="@string/brightness_settings_automatic" />
</LinearLayout>
</com.android.systemui.statusbar.quickpanel.BrightnessSettingsView>

↑ちなみにこのソースはquickpanel_brightness_settingsのものと同一。

これで通知領域に照度バー取り付け完了と思ったが、ダメだった。

バーをスライドさせることは出来るんだけど、画面の明るさが変わらない('∀`)

どこかダメなんかな?

今後通知領域に音楽プレイヤーとか埋め込もうとか思ってるのに…。

おすすめの記事