Статус бар 4.2 для 2.3

Рейтинг:   / 0
ПлохоОтлично 

ApkTool: ???
Android: 2.3
Проверено на: Samsung GT-S5830i Galaxy Ace

Все знают предмет вожделения 4.2 - опустил шторку, клацнул иконку и вылезли плитки, вот это и делаем.

Что потребуется:
храбрость
умение ковырятельства
файлы
большое желание

Опубликовано и переведено по многочисленным просьбам трудящихся.

Приступим.

1. Разбираем SystemUI.apk
2. идем в /res/layout/statusbar_expanded.xml и находим там

3. После этой строки добавляем

<RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false">
<include layout="@layout/header" android:id="@id/headerid" android:layout_width="fill_parent" android:layout_height="48.0dip" />
</RelativeLayout>
<com.pineapple.PineappleLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<include layout="@layout/quickpanel_quick_settings_secondlayout" />
</LinearLayout>

4. перед последней строчкой

</com.android.systemui.statusbar.ExpandedView>

добавляем
</com.pineapple.PineappleLayout>

На самсунгах 2.3 это дело выглядеть будет так

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.ExpandedView android:orientation="vertical" android:focusable="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout android:orientation="horizontal" android:background="@drawable/quickpanel_plmn_background" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false">
<include android:id="@id/header" android:layout_width="fill_parent" android:layout_height="48.0dip" layout="@layout/header" />
</RelativeLayout>
<com.pineapple.PineappleLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<include layout="@layout/quickpanel_quick_settings_second" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0">
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="wrap_content" android:overScrollMode="ifContentScrolls">
<com.android.systemui.statusbar.NotificationLinearLayout android:orientation="vertical" android:id="@id/notificationLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="17.0sp" android:textStyle="normal" android:textColor="#ffffffff" android:id="@id/noNotificationsTitle" android:background="@drawable/quickpanel_title_background" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="26.0dip" android:text="@string/status_bar_no_notifications_title" />
<TextView android:textSize="17.0sp" android:textStyle="normal" android:textColor="#ffffffff" android:id="@id/latestTitle" android:background="@drawable/quickpanel_title_background" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="26.0dip" android:text="@string/status_bar_latest_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.NotificationLinearLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</com.pineapple.PineappleLayout>
</com.android.systemui.statusbar.ExpandedView>


5. Идем в /res/values/ids.xml и в конце добавляем

<item type="id" name="headerid">false</item>
<item type="id" name="clock">false</item>
<item type="id" name="panel">false</item>

6. В strings.xml добавляем

<string name="statusbardateformat">"%1$s
%2$s"</string>

7. Вернемся к /res/layout/statusbar.xml и добавим выделенные строки

<com.android.systemui.statusbar.StatusBarServiceLRPull android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/icons" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:paddingLeft="6.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layout_alignParentLeft="true" />
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" />
<com.android.systemui.statusbar.Clock android:textAppearance="@*android:style/TextAppearance.StatusBar.Icon" android:textColor="#ffffffff" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
</LinearLayout>
</com.android.systemui.statusbar.StatusBarServiceLRPull>

8. Загружаем и кидаем в свой разобранный статус бар pineappleadd (1).zip

9. Компилим - декомпилим из папки дист и находим иды в public.xml этих вещей

<public type="drawable" name="btn_tg"
<public type="drawable" name="btn_toggles_normal"

10. Идем в /smali/com/pineapple/SecondLayout.smali и находим 0x7f020180 и заменяем это значение на свое из паблика с именем

<public type="drawable" name="btn_toggles_normal"

11. далее находим тут же 0x7f02017f и заменяем на значение из паблика

<public type="drawable" name="btn_tg"

12. Далее идем в /smali/com/android/systemui/statusbar/policy/DateView находим 0x7f07002a и заменяем на значение ида из паблика с именем

<public type="string" name="statusbardateformat"

Сохраняем, компилируем все, соблюдаем все степени сжатия и получаем на выходе Шторку с 2 лайаутами - только ее. плиток еще нету.

Делаем плитки
1. идем в ids.xml в res/values
и добавляем

<item type="id" name="quickpanel_button">false</item>
<item type="id" name="quickpanel_text">false</item>
<item type="id" name="quickpanel_image">false</item>
<item type="id" name="quickpanel_indicator">false</item>
<item type="id" name="Lidroid">false</item>

2. Открываем dimens.xml и перед </resources> добавляем

quickpanel_button_height">79.0px

Это для лдпи. как подобрать в остальным - не знаю, тк не на чем.

3. открываем res/values/strings.xml и добавляем

<string name="quickpanel_wifi_text">Wi-Fi</string>
<string name="quickpanel_bluetooth_text">Bluetooth</string>
<string name="quickpanel_gps_text">GPS</string>
<string name="quickpanel_sound_text">Sound</string>
<string name="quickpanel_sound_vibration_text">"Sound Vibration"</string>
<string name="quickpanel_silent_text">Silent</string>
<string name="quickpanel_vibration_text">Vibration</string>
<string name="quickpanel_rotation_text">"Auto rotation"</string>
<string name="quickpanel_shutdown_text">Phone will be shutdown</string>
<string name="quickpanel_shutdown_confirm">Shutdown</string>
<string name="quickpanel_sound_vibrate">Vibrate</string>
<string name="quickpanel_sound_sound">Sound</string>
<string name="quickpanel_sound_silent">Silent</string>
<string name="quickpanel_sound_sound_vibrate">Sound Vibrate</string>
<string name="quickpanel_sync">Sync</string>
<string name="quickpanel_wifiap">Wifi Ap</string>
<string name="quickpanel_wifi">Wifi</string>
<string name="quickpanel_rotation">Auto Rotate</string>
<string name="quickpanel_airplane">Airplane</string>
<string name="quickpanel_bluetooth">Bluetooth</string>
<string name="quickpanel_brightness">Brightness</string>
<string name="quickpanel_flashlight">Flashlight</string>
<string name="quickpanel_gps">GPS</string>
<string name="quickpanel_lockscreen">Lockscreen</string>
<string name="quickpanel_mobiledata">Data</string>
<string name="quickpanel_reboot">Reboot</string>
<string name="quickpanel_reboot_text">Phone will reboot</string>
<string name="quickpanel_screen_timeout">Screen Timeout</string>
<string name="quickpanel_recovery">Recovery</string>

Есть желание в res/values-ru/strings.xml переводим

<string name="quickpanel_wifi_text">Wi-Fi</string>
<string name="quickpanel_bluetooth_text">Bluetooth</string>
<string name="quickpanel_gps_text">GPS</string>
<string name="quickpanel_sound_text">Звук</string>
<string name="quickpanel_sound_vibration_text">"Звук и вибро"</string>
<string name="quickpanel_silent_text">Тихо</string>
<string name="quickpanel_vibration_text">Вибрация</string>
<string name="quickpanel_rotation_text">Автоповорот</string>
<string name="quickpanel_shutdown_text">Тел. будет выключен</string>
<string name="quickpanel_shutdown_confirm">Выключение</string>
<string name="quickpanel_sound_vibrate">Вибро</string>
<string name="quickpanel_sound_sound">Звук</string>
<string name="quickpanel_sound_silent">Тишина</string>
<string name="quickpanel_sound_sound_vibrate">Звук и вибро</string>
<string name="quickpanel_sync">Синхр.</string>
<string name="quickpanel_wifiap">Т. Доступа</string>
<string name="quickpanel_wifi">Wifi</string>
<string name="quickpanel_rotation">Автоповорот</string>
<string name="quickpanel_airplane">Полет</string>
<string name="quickpanel_bluetooth">Bluetooth</string>
<string name="quickpanel_brightness">Яркость</string>
<string name="quickpanel_flashlight">Фонарик</string>
<string name="quickpanel_gps">GPS</string>
<string name="quickpanel_lockscreen">Lockscreen</string>
<string name="quickpanel_mobiledata">Data</string>
<string name="quickpanel_reboot">Перезагрузка</string>
<string name="quickpanel_reboot_text">Тел будет перезагружен</string>
<string name="quickpanel_screen_timeout">Тайм-аут экрана</string>
<string name="quickpanel_recovery">Рекавери</string>

4. Уже могут быть эти строки - сносим

<string name="quickpanel_wifi_text">Wi-Fi</string>
<string name="quickpanel_bluetooth_text">Bluetooth</string>
<string name="quickpanel_gps_text">GPS</string>
<string name="quickpanel_sound_text">Sound</string>
<string name="quickpanel_sound_vibration_text">"Sound Vibration"</string>
<string name="quickpanel_silent_text">Silent</string>
<string name="quickpanel_vibration_text">Vibration</string>
<string name="quickpanel_rotation_text">"Auto rotation"</string>

5. Распихиваем себе это дело Lidroid1.zip

6. Собираем - разбираем.

7. Открываем Statusbar_expanded.xml и вставляем где нибудь, думаю разберетесь, даже если с первого раза не попадете

<com.lidroid.systemui.quickpanel.PowerWidget android:id="@id/Lidroid" android:layout_width="fill_parent" android:layout_height="wrap_content" />

8. Идем в com/android/systemui/statusbar/StatusBarService.smali
в поле

# instance fields

и ниже
.field mPositionTmp:[I

добавляем

.field mPowerWidget:Lcom/lidroid/systemui/quickpanel/PowerWidget;

9. Ищем

.method private makeStatusBarView(Landroid/content/Context;)V

и в конце метода, после

.line (здесь ваше число)
return-void

, но перед
.end method

добавляем
.line 656
iget-object v5, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;

const v6, 0x7f090039

invoke-virtual {v5, v6}, Lcom/android/systemui/statusbar/ExpandedView;->findViewById(I)Landroid/view/View;

move-result-object v5

check-cast v5, Lcom/lidroid/systemui/quickpanel/PowerWidget;

iput-object v5, p0, Lcom/android/systemui/statusbar/StatusBarService;->mPowerWidget:Lcom/lidroid/systemui/quickpanel/PowerWidget;

iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mPowerWidget:Lcom/lidroid/systemui/quickpanel/PowerWidget;

invoke-virtual {v6}, Lcom/lidroid/systemui/quickpanel/PowerWidget;->setupWidget()V


10. Открывем public.xml ищем
Lidroid
и заменяем найденным идом ид в строках, добавленных выше, а именно, этот
0x7f090039

11. опять открываем Statusbarservice.smali и в методе

.method public addIcon(Ljava/lang/String;IILcom/android/internal/statusbar/StatusBarIcon;)V

после return-void но перед .end method добавляем
.line 1900
iget-object v1, p0, Lcom/android/systemui/statusbar/StatusBarService;->mPowerWidget:Lcom/lidroid/systemui/quickpanel/PowerWidget;

invoke-virtual {v1}, Lcom/lidroid/systemui/quickpanel/PowerWidget;->updateWidget()V

12. А теперь - всем добра и удачи в одном деле. Открываем ВСЕ смали файлы по пути com/lidroid/systemui/quickpanel и во всех сразу ищем
0x7f

Нашли. 79 штук. Они будут в таком виде - 0x7f070032 ..... и тд. Так вот. НАшли, например значение 0x7f0200ca, открываем вот этот паблик public.xml 
и ищем в нем это значение, это -

<public type="drawable" name="stat_brightness_on"

, теперь ищем это
<public type="drawable" name="stat_brightness_on"

в своем паблике, и заменяим ид в смали.

Добавить комментарий


Защитный код
Обновить