> Внимание!

Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.



Редактирование системных apk линейки смартфонов Samsung Galaxy Note (Note I, Note II, Note III)



Реп: (1317)
Редактирование системных apk
линейки смартфонов Samsung Galaxy Note

(Note I, Note II, Note III, ...)

Приветствуем всех, у кого есть желание научиться самому редактировать
системный софт смартфонов линейки Note..
Изображение Учимся, делимся опытом и обсуждаем нюансы редактирования.

Правила темы
В теме действуют все: Правила Форума + Правила раздела "Android - Украшательства" а так же Новым прибывшим на форум 4PDA: 10 заповедей новичка

● В этой теме обсуждается только сам процесс редактирования.

● Не дублировать ветку "Модификация...".

● Прежде чем задать вопрос – изучите шапку, внимательно прочитайте тему, просмотрите ссылки. Возможно там Вы найдете ответ на свой вопрос.

● Прежде чем дать ответ на вопрос (особенно если он кажется Вам элементарным) – просмотрите шапку темы, возможно ответ уже дан до Вас.

● Вопросы, ответ на которые напрямую дан в шапке, а так же ответы на эти вопросы – удаляются без предупреждений и объяснений. Ответы типа «Смотри шапку… Пользуйся поиском…» постигнет та же участь.

● Любые изображения должны быть убраны под спойлер.

● Посты благодарности типа «Спасибо, помогло!...» удаляются без объяснений. На форуме существует система изменения репутации, дополнительный плюс к репутации автора лучше текста "СПАСИБО".

● Диалоги двух человек приравниваются к флуду и удаляются. Подобные разговоры должны проходить в QMS. Это не ЧАТ, это форум!

● Не стесняйтесь выражать свое отношение к постам пользователей, пользуясь кнопками ХОРОШО и ПЛОХО. Это помогает повысить информативность темы и поддерживать порядок.

● Посты с рейтингом -3 и ниже будут удаляться без объяснений.

● Обсуждение самого аппарата либо его прошивок - в соответствующих темах (ссылки даны в шапке).

● Запрещено писать "+1", "поддерживаю", "мне тоже" и т.д. и т.п.. если вы поддерживаете пользователя в вопросе или просьбе, пользуйтесь кнопкой "хорошо" внизу сообщения, в противном случае посты с такой "поддержкой" подлежат удалению!

● Редактирование приложений из Cyanogen Mod, MIUI, других модификаций не обсуждается.


Готовые модификации софта и украшательства публикуются здесь:
Samsung GT-N7000 Galaxy Note »
Samsung GT-N7100 Galaxy Note II »
Samsung SM-N900 Galaxy Note III » | Samsung SM-N9005 Galaxy Note III LTE »
Samsung SM-N910C Galaxy Note IV »


С чего начать
Инструкция для windows 7, на других версиях пути могут отличаться
Устанавливаем JDK, Android SDK. В ..\C:\Program Files (x86)\Android\android-sdk\ запускаем SDK Manager.exe и в Installed Packages обновляем все инструменты - Update All. После в Windows по Мой компьютер -> Свойства системы -> Дополнительно -> Переменные среды нужно прописать пути к ним в конце пункта Path, разделяя точкой с запятой. У меня получилось так:
C:\Program Files\Java\jdk1.7.0_03\bin\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\Android\android-sdk\tools\;

Содержимое этих двух архивов с APKTool распаковываем в папку Windows: 1 и 2
APKTools здесь внизу поста распаковываем в корень диска C:\, содержимое из папки framework с телефона или из архива с прошивкой на ПК помещаем в папку APKTools1.4.3 на диске C:\, для работы с framework-res.apk иногда нужен скрипт для автоматической замены %d of %d на %1$d of %2$d во всех plurals.xml, поэтому извлекаем в ту же папку этот скрипт
Теперь нужно установить фреймворк для своей прошивки, чтобы можно было разбирать все системные apk. (Эту операцию нужно проделать один раз для всякой прошивки). Перетаскиваем файл framework-res.apk на файл apktool-if.cmd и то же повторяем для файла twframework-res.apk
Всё готово, помещаем свой системный апк в папку ApkTools143, перетаскиваем его на файл apktool-d.cmd - разбираем, редактируем, перетаскиваем его на файл apktool-b.cmd - собираем. Открываем с помощью WinRARа исходный апк и открываем папку апк/build/apk и перемещаясь по папкам, переносим изменённые файлы на окно WinRARа, выбираем в диалоге степень сжатия обычный или без сжатия в зависимости от того, как файл находится в архиве.
Если редактировали xml в папках values, добавляли или удаляли изображения - resources.arsc менять обязательно т.к. в нём находятся все папки values и файл public.xml, в котором присваиваются ID всем ресурсам.
Другими словами, в собранном apk все папки начинающиеся на values находятся в файле resources.arsc, а папка smali - в файле classes.dex.
За инструкции спасибо ув. sk0t, ув. Lares и многим...
Ошибки которые Вас ожидают
Всё расписано здесь. Благодарим за науку ув. sk0t


Samsung GT-N7000 Galaxy Note

Samsung GT-N7100 Galaxy Note II

Samsung SM-N900 Galaxy Note III

Общие инструкции

Полезные ссылки

Прикрепленное изображение Всё что вы делаете со своим аппаратом, Вы делаете на свой страх и риск, ни куратор темы, ни модераторы, ни администрация сайта ответственности не несут!!!


Сообщение отредактировал Nesmeyan - 15.07.15, 22:44
Причина редактирования: Добавил инструкции



Реп: (1854)
Небольшой очерк по редактированию ТАЧВИЗА на 404 и 411 для новичков. Тач простая прога - на нем учиться легко. И очень приятно когда пользуешься и знаешь что сделана она твоими руками.

Подготовка.
Для начала нужно скачать инструменты для разбора\сбора прог из самого известного поста sk0t (естественно тот пост надо выучить на изусть)
Качаем апктул143 ОЙ!

Далее в папку с инструментами кидаем фрамворк-рес.апк твфрамворк-рес.апк и наш тачвиз. Перетягиваем мышкой на apktool-if.cmd наши фрамворки после этого разбираем тачвиз перетягивая его мышкой на apktool-d.cmd (дестрой).

Потом читаем и принимаем к сведению инструкции по редактированию Тачвиза сдесь в шапке и здесь ОЙ!
Они нам не подходят, но дают представление о том что Тач он всегда Тач и редактируется всегда примерно одинаково (впрочем как и остальные лаунчеры :D )

Ну будем щитать КМБ пройденым!


Итак в нашем таче нас будут интересовать следущие папки (в разобраный тач заходим и в рес):

values
Это папка с общими настройками для всех разрешений и локализаций.
bools.xml

не проверял, но выглядит как фиксация обоев, заменить на true
<bool name="config_fixedWallpaperOffset">false</bool>

убираем надписи о том что перетащить на экран надо что нибудь
<bool name="opt_showHelpTextOnEmptyHomePage">false</bool>
<bool name="opt_showToastWhenNewMenuPageCreated">false</bool>

integers.xml

ориентация картинки
<integer name="config_screenOrientation">5</integer>

колво предустановленных экранов
<integer name="config_workspaceDefaultScreenCount">3</integer>
<integer name="config_workspaceDefaultScreenCount_simple">3</integer>

максимальное кол-во экранов
<integer name="config_workspaceMaxScreenCount">9</integer>

домашний экран (отсчет с 0)
<integer name="config_workspaceDefaultHomeScreenIndex">1</integer>
<integer name="config_workspaceDefaultHomeScreenIndex_simple">1</integer>

values-ru-land и values-ru папки
стринг.хмл - переводим на великий и могучий, если тут нет строк как в основной папке валуес, то копируем их сюда и переводим

Ну и теперь папки с нашим разрешением values-sw399dp и values-sw399dp-land(ландшафтный режим)

integers.xml

Вот поля для сетки на главном экране (если менять то придется править стиль.хмл и dimens.xml в этой же папке)
<integer name="home_cellCountX">5</integer>
<integer name="home_cellCountY">5</integer>

максимальное кол-во раб столов
<integer name="home_pageIndicatorMaxVisible">9</integer>

время анимации при входе в меню прог (надо будет уточнить)
<integer name="page_snap_animation_duration">550</integer>

панель быстрого запуска
<integer name="hotseat_cellCountX">5</integer>
<integer name="hotseat_cellCountY">1</integer>

Поля сетки в меню приложений, важно чтоб общее кол-во ячеек совпадало с ландш. режимом (если его активировали) например 5х6 в простом и 6х5 в ландшафтном = 30 ячеек (если менять то придется править стиль.хмл и dimens.xml в этой же папке)
<integer name="menuAppsGrid_cellCountX">5</integer>
<integer name="menuAppsGrid_cellCountY">6</integer>

Максимальное колво индикаторов экранов
<integer name="menu_pageIndicatorMaxVisible">15</integer>

Кол-во виджетов в меню на странице
<integer name="menuWidgets_cellCountX">2</integer>
<integer name="menuWidgets_cellCountY">3</integer>

А это ряды-ячейки в созданной папке
<integer name="max_folder_visible_rows">4</integer>
<integer name="max_folder_visible_cols">4</integer>

styles.xml

Иконки панели быстрого запуска
<style name="HotseatIcon" parent="@style/BaseHotseatIcon">

Иконки меню прог ( правится аналогично с хот, разберу этот - первый по аналогии)
<style name="MenuIcon" parent="@style/BaseMenuIcon">

Размер текста под иконкой, чтоб совсем текст убрать 0 поставить надо. С помощью изменения размера текста можно править размер ячеек (если иконка не влазит)
<item name="android:textSize">11.0dip</item>

Вариант окончания длинного названия ... (есть варианты эклипс и маргинтамчегото)
<item name="android:ellipsize">end</item>

смещение как ни странно в право
<item name="android:paddingLeft">3.0dip</item>

смещение в лево (на самом деле это с права прозрачных пикселей добавить)
<item name="android:paddingRight">3.0dip</item>

Текст в одну строку, если не помещается - текст обрывается
<item name="android:singleLine">true</item>

dimens.xml
Вот десь и регулируем размер ячеек сетки, чтоб виджеты не обрезались.

для главного экрана
<dimen name="home_cellWidth_land">100.0dip</dimen>
<dimen name="home_cellHeight_land">72.0dip</dimen>

для меню прог
<dimen name="menuAppsGrid_cellWidth">78.0dip</dimen>
<dimen name="menuAppsGrid_cellHeight">85.0dip</dimen>

меню виджетов (собственно и незачем)
<dimen name="menuWidgets_previewWidth">150.0dip</dimen>
<dimen name="menuWidgets_previewHeight">118.0dip</dimen>

Ну много чего ещё интересного в этом файле - но написано просто, немного подумав любой разберётся.

xml папка
В ней нас интересует файл
default_workspace.xml
в нем прописаны предустановленные на экране виджеты, ярлыки прог и проги в панели быстрого запуска.
Название прог если свои вписать охота (сом.тамчегото.ёлы.палы) проще всего смотреть в андроид манифесте в первой строке ткнув рутэксплорером в прогу и потом в андроид манифест.

Так, ну вот, если вам более ничего от лаунчера не нужно, то собираем его перетягивая папку с разобранным лаунчером на apktool-b.cmd
После компиляции открываем дистрибутив лаунчера раром и из папки лаунчер\build\apk переносим с подменой файлы:
classes.dex - если смали правили - степень сжатия обычная
resources.arsc - без сжатия
правленные хмл из папки рес - степень сжатия обычная
графику если меняли - без сжатия.
Ну всё, готово, можно пробовать менять свой на этот мод. Устанавливать любым способом (апдейтом или подменой) тк мы его не подписывали - не меняли сертификат подписи.

Теперь вариант с включением ландшафтного режима (на самом деле методик две или три, я одну расскажу которой пользуюсь)
Для включения ландшафта нужно править андроид манифест (со всеми вытикающими последствиями)
находим (примерно в середине) такое:
android:screenOrientation=" " и меняем значение в кавычках на android:screenOrientation="user"
усе, ландшафт есть. Но поправив андроид манифест мы будем вынуждены прогу переподписать. Всебы ничего да Тач системная прога...

Отступление про системные проги. Как определить системная прога или нет? Очень просто, в андроид манифесте системных прог в самом начале есть параметр android:sharedUserId="андроид. ..." Причем системных прог несколько видов:
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.phone"
android:sharedUserId="android.uid.share"
android:sharedUserId="android.media"
И подписаны они при сборке производителем разными ключами тесткей, шарекей, медиакей и тд. Эти ключи образуются при компиляции проши из исходников (как говорят, я сам не делал) и соответственно родные ключи взять негде.
Ключи можно сделать самому с помощью входящего в состав JDK keytool и переподписать jarsigner ом - методика на форуме есть. Но гемор это страшный. И все равно прога системной уже не будет. Есть вариант проще.

вобщим мы меняем android:sharedUserId="..." на свой, например android:sharedUserId="4pda" и подписываем прогу перетаскивая ее на Sign.cmd
Все прога не системная, как правило такие проги можно потом и в дата и на флеху устанавливать и на другие телефоны (я тач жене на ЛГ делал)
После этого нужно выявить виджеты тача и переподписать их точно также, чтоб ИД совпадал и сертификат подписи (поэтому я в начале поста и сказал инструменты из одного поста брать - чтоб сертификат у всех один был, а ИД можно договориться и 4pda всем ставить).

Ну вот, в результате переподписывания мы получили отвязанный от системности Тач и его виджеты. Теперь их надо правильно в тел поставить.
Для этого удаляем родные и перезагружаемся - этим очищаем систему от старого ИД. Потом устанавливаем свои любым доступным способом.

кажись усе


Сообщение отредактировал finist1 - 17.11.12, 05:05



Реп: (1480)
InkEffect без стилуса (N7100 Android 4.1.2)


1. android.policy.jar/smali/com/android/internal/policy/impl/sec/CircleUnlockRippleRenderer.smali

Ищем
invoke-virtual/range {p2 .. p2}, Landroid/view/MotionEvent;->getSource()I

move-result v1

and-int/lit16 v1, v1, 0x4002

const/16 v2, 0x4002

if-ne v1, v2, :cond_1

Меняем на
invoke-virtual/range {p2 .. p2}, Landroid/view/MotionEvent;->getSource()I

move-result v1

and-int/lit16 v1, v1, 0x4002

const/16 v2, 0x4002

if-ne v2, v2, :cond_1


Всё :)
Теперь эффект чернил(InkEffect) будет работать при касании пальцем

P.S. Нужен доброволец с N7000, для портирования данного эффекта на первый ноте...требования: установленная Deodex прошивка 4.1.2 (утечка), ICQ и умение сохранять логи телефона
P.P.S. стучать в личку


Сообщение отредактировал mythtrandyr - 26.11.12, 15:43



Реп: (2974)
Учебник. Как декомпилировать apk и перекомпилировать apk файлы.


Мануал на инглиш на XDA
http://forum.xda-developers.com/showpost.p...amp;postcount=1

Прикрепленный файлAutoAPKTool2.0.4a.zip ( 13.15 МБ )



Реп: (257)
alexseyuh @ 27.11.2012, 22:18 *
Учебник. Как декомпилировать apk и перекомпилировать apk файлы.

Кто б еще на русский перевел с картинками?
А по поводу сборок после изменения .арк могу сказать следующее: как-то раз собрал .арк не по правилам, тоесть закинул все файлы с обычным сжатием-и графику и .xml, вроде все заработало. Ну и подумал- раз все и так работает нафига заморачиваться с изменением сжатия - так закинул и все гуд. После этого заметил, что тел стал все больше и больше тормозить. Решил пересобрать все файлы по правилам, и - чудо, все просто залетало! И оперативки свободной на ~200 больше стало! Так-что не пренебрегайте правилами, даже если и так вроде все работает!
Р.S. . В основном менял системные файлы.

Сообщение отредактировал prototip1974 - 28.11.12, 08:00



Реп: (1854)
Пока жена концерт устраивает, решил наконец черкнуть заметку про редактирование SystemUI.apk на первом Ноте (сто очков на втором пойдёт) на 411-412
Собственно нас интересовать будут всего три файла:

res/layout/tw_status_bar_expanded.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">

android:background="@drawable/notification_panel_bg" Это фон шторки, сделан картинкой в папке drawable-xhdpi , можно здесь на цвет сменить android:background="#00000000"



<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
<include android:layout_width="fill_parent" android:layout_height="@dimen/tw_notification_panel_header_height" layout="@layout/tw_status_bar_expanded_header" />
<TextView android:gravity="center" android:id="@id/emergency_calls_only" android:paddingBottom="4.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" />



<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="@dimen/tw_notification_panel_header_height" />

это однопиксельный разделитель между полями. android:background="#ff091a24" - его цвет



ниже массив от слайдера яркости до нижней кнопки закрывающей шторку
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="@dimen/tw_notification_panel_header_line_height" android:overScrollMode="ifContentScrolls">
<LinearLayout android:orientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="wrap_content">


<HorizontalScrollView android:id="@id/quicksetting_scroller" android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</HorizontalScrollView>

это массив со скрол кнопками, подложка под кнопками прописана в смали её здесь нет, называется drawable-xhdpi\tw_quick_panel_quick_setting_button_bg_normal.9.png
android:divider="@drawable/tw_black_bg" - черная тоненькая полоска разделитель между кнопками, можно поменять здесь на цвет android:divider="#00000000" или одноименную картинку сменить



<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip">
<ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" />
<FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
</FrameLayout>
</LinearLayout>
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" />
</LinearLayout>

А вот это слайдер яркости. android:background="#ff000000" - подложка под ним, можно здесь на цвет сменить, можно написать android:background="@drawable/bg1" и бросить в папку drawable-xhdpi картинку bg1.png



<LinearLayout android:orientation="vertical" android:id="@id/noNotificationsTitle" android:focusable="true" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/noNotificationsText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height" android:text="@string/status_bar_no_notifications_title" />
</LinearLayout>

это тонкая полоска нет уведомлений. Я обычно в стрингах убираю >< ее текст и она не высвечивается или android:textSize="" - размер шрифта сменить на android:textSize="0.0dip"



<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/onGoingNotificationText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/status_bar_ongoing_events_title" />
</LinearLayout>

это тонкая полоска текущее. android:background="#ff293945" - цвет подложки (можно также на картинку сменить), android:textColor="@color/notification_category_color" - это цвет текста, можно прям здесь сменить на android:textColor="#ffваш_цвет" можно в валуес\колорс.хмл его изменить



<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/onGoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />

это окно полосы уведомлений, ох и не нравится оно мне, пока не придумал как его прозрачным сделать а как на цветной фон сменить я вот здесь писал http://4pda.to/forum/index.php?showtopic=286512&view=findpost&p=17238646



<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" />
<TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" />
</RelativeLayout>
</LinearLayout>

Это массив кнопки стереть и ее полоски, все также как выше и фон (android:background) и цвет надписей (android:textColor)



<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/notificationItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
ещё окна уведомлений



</LinearLayout>
</ScrollView>
</FrameLayout>



А это нижняя кнопка закрывающая шторку
<com.android.systemui.statusbar.phone.CloseDragHandle android:layout_gravity="bottom" android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height">
вот сюда я обычно кнопки скроловые переношу себе
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:src="@drawable/tw_status_bar_close" android:scaleType="fitXY" />

это две картинки внизу шторки tw_status_bar_close_off.png и tw_status_bar_close_on.png



<TextView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network" android:gravity="center" android:layout_gravity="bottom" android:id="@id/carrier_label" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:layout_marginBottom="10.0dip" />

Это название оператора, цвет как видим не описан, размер и цвет будут в валуес\стиль.хмл тег TextAppearance.StatusBar.Expanded.Network.
Можно перенести в файл tw_status_bar_expanded_header.xml , описывающий самое верхнее поле в шторке (где дата)



</RelativeLayout>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout>


res/layout/tw_status_bar_expanded_header.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="39.0dip" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">

android:background="#ff000000" - фон под самым верхним полем где дата, также можно на свой цвет менять, можно на картинку (картинку незабываем в драваблес-xhdpi бросить и потом после компиляции в дистрибутив добавить)


<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="-3.0dip" android:singleLine="true" systemui:ampmSmall="true" />

часы - цвет их все теперь знают как искать и редактировать, android:layout_width="wrap_content" android:layout_height="wrap_content" - размер по ширине и высоте


<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffcbcbcb" android:ellipsize="none" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:layout_marginRight="4.0dip" android:maxLines="2" />

дата - все тоже самое, android:maxLines="2" - понятно что две строки

<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:visibility="gone" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="8.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
замок

<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:layout_width="1.0dip" android:layout_height="25.0dip" android:layout_marginTop="7.0dip" android:layout_marginBottom="7.0dip" android:src="@drawable/tw_quick_panel_plnm_setting_dv" />
вертикальный разделитель


<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">
<ImageView android:id="@id/settings_button_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_quickpanel_icon_settings" android:scaleType="center" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_settings_button" />
</RelativeLayout>
А это кнопка вызова настроек, сразу удаляем фон под иконкой android:background="@drawable/tw_quick_panel_setting_button_bg" иначе он будет отличаться от общего фона всего поля. tw_quickpanel_icon_settings.png - иконка ентой кнопки.

</LinearLayout>


res/layout/tw_status_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">

android:background="@drawable/status_bar_background" - фон полоски с батарейкой, вайфаем и тп. Прописан цветом в валуес\драваблес.хмл <item type="drawable" name="status_bar_background">#ff1e1e1e</item> можно цвет менять там, можно здесь на цвет или картинку android:background="#00000000" или android:background="@drawable/bg2"


<ImageView android:id="@id/notification_lights_out" android:paddingLeft="6.0dip" android:paddingBottom="2.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@id/left_icons" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>


ниже массив описывающий правые иконки, часы и тд. Можно местами менять.
<LinearLayout android:orientation="horizontal" android:id="@id/right_icons" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
инет - 3г вайфай, описан layout="@layout/tw_signal_cluster_view" в файле tw_signal_cluster_view.xml
<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
текст батарейки
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
батарейка
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
часы - размер, цвет, можно подложку дописать


</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginRight="4.0dip">
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:paddingRight="10.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_old" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_new" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBarView>


Не забывайте если цвет подложек с цвета меняли на картинки добавить их в рес\drawable-xhdpi а после компиляции в дистрибутив. В дистрибутиве незабывайте удалять .9.png если вы меняли на одноименные неиндексированные (это я про тело шторки)

разное
размер кнопок скрола, текст, подсветка прописаны в values-sw360dp\dimens.xml

<dimen name="quick_setting_button_height">90.0dip</dimen>
высота кнопок

<dimen name="quick_setting_button_image_height">46.0dip</dimen>
высота иконки кнопки

<dimen name="quick_setting_button_text_height">32.0dip</dimen>
<dimen name="quick_setting_button_text_size">13.0dip</dimen>
размер текста под кнопкой

<dimen name="quick_setting_button_status_height">10.0dip</dimen>
высота подсветки под кнопкой

Я текст под кнопкой и подсветку себе 0 ставлю - тем самым избавляюсь от них (текст не красивый - где в ряд где в два, и без него понятно что кнопка делает)


так ну порядок кнопок в скроле еще остался, его делаем в валуес\arrays.xml
На утечке Нота1 LSA есть нюанс, самсунг тупо забыл туда некоторые кнопки вписать, а код и ресурсы на них есть, поэтому прописываем туда все что знаем
<item>Wifi</item>
<item>Location</item>
<item>SilentMode</item>
<item>AutoRotate</item>
<item>Bluetooth</item>
<item>MobileData</item>
<item>DormantMode</item>
<item>PowerSaving</item>
<item>AllShareCast</item>
<item>MultiWindow</item>
<item>AirplaneMode</item>
<item>DrivingMode</item>
<item>NfcP2p</item>
<item>DoNotDisturb</item>
<item>SmartStay</item>
<item>Sync</item>
На что код есть можно посмотреть в смали/com/android/systemui/statusbar/policy/quicksetting/QuickSettingPanel тупо по названию файлов


Сообщение отредактировал finist1 - 28.11.12, 22:17



Реп: (257)
finist1 @ 28.11.2012, 21:34 *
решил наконец черкнуть заметку про редактирование SystemUI.apk на первом Ноте

Пробовал добавить режим самолета,- "ошибка SystemUI"- сатусбара совсем нет! В QuickSettingPanel есть файл с названием AirplaneModeQuickSettingButton.smali и 6 штук AirplaneModeQuickSettingButton$(номер с 1 по 6).smali иконки тоже есть, где еще рыть? Добавил только строчку аирплпне
так ну порядок кнопок в скроле еще остался, его делаем в валуес\arrays.xml
На утечке Нота1 LSA есть нюанс, самсунг тупо забыл туда некоторые кнопки вписать, а код и ресурсы на них есть, поэтому прописываем туда все что знаем
<item>Wifi</item>
<item>Location</item>
<item>SilentMode</item>
<item>AutoRotate</item>
<item>Bluetooth</item>
<item>MobileData</item>
<item>DormantMode</item>
<item>PowerSaving</item>
<item>AllShareCast</item>
<item>MultiWindow</item>
<item>AirplaneMode</item>
<item>DrivingMode</item>
<item>NfcP2p</item>
<item>DoNotDisturb</item>
<item>SmartStay</item>
<item>Sync</item>
На что код есть можно посмотреть в смали/com/android/systemui/statusbar/policy/quicksetting/QuickSettingPanel тупо по названию файлов

Прошивка Ultimate, но файлы идентичны.

Сообщение отредактировал prototip1974 - 30.11.12, 10:57



Реп: (1854)
Поправка, файлы идентичны или мз той же прошивки? Не знаю что за проша ультимате, но если она на базе лса то знай что утечка лса и тестовая лса можно сказать разные проши. На тестовай лса у меня тоже иконки эти пропали, а я прогу не редактировал, переставляю на первую одекс лса - появляются.



Реп: (1177)
finist1 @ 30.11.2012, 12:23 *
Поправка, файлы идентичны или мз той же прошивки? Не знаю что за проша ультимате, но если она на базе лса то знай что утечка лса и тестовая лса можно сказать разные проши. На тестовай лса у меня тоже иконки эти пропали, а я прогу не редактировал, переставляю на первую одекс лса - появляются.

Надо сравнивать не чьи-то прошивки а два дампа прошивок XXLSA. Я сравнил - они идентичны на бинарном уровне



Реп: (257)
sva4pda,
Приветствую Ромодела! Я у вас без спроса выдернул некоторые плюшки для статусбара, так вы уж не обижайтесь, уж больно они прикольные! А кнопку я добавлял в ультимате v5. Но не пошло!

Сообщение отредактировал prototip1974 - 30.11.12, 20:57



Реп: (50)
Здравствуйте!
Прошу помочь, есть стоковый виджет погоды, на нем надпись AccuWeather в угле.
Хочу редактировать файл так чтобы убрать данную надпись... Декомпилировал его, но не знаю где хранится данная надпись, и как ее удалить.
Помогите! вот скрин того что хочу убрать
Прикрепленное изображение



Реп: (50)
Здравствуй!
Декомпилировал файл framework-res.apk но там нет папки layout-sw360dp соответственно нет и keyguard_circlelock_clockwidget.xml
Что делать в таком случае? вот скрин... и еще вот сам файл Прикрепленный файлframework-res.apk ( 12.79 МБ )
может вы поможете мне в редактировании... буду очень признателен!
Прикрепленное изображение


Сообщение отредактировал trafic777 - 09.12.12, 13:50



Реп: (50)
Как восстановить файл framework-res.apk, делал некие модификации, залил его в папку framework, и тело зависло, я понимаю что что-то сделал не так, есть бэкап данного файла, вопрос в том как его запихнуть опять в папку framework, если тело зависло на надписи андроид. Буду очееень признателен за помощь!



Реп: (963)
через adb можно. грузи recovery.
а потом что-то типа:
adb push framework-res.apk /system/framework/framework-res.apk

ну или тупо архивчик с обновлением сделать и через cwm прошить.

Сообщение отредактировал WakeUp - 09.12.12, 23:12



Реп: (440)
trafic777,
Возьмите "контейнер", удалите оттуда всё не нужное, запихните туда свой файл в папку framework и прошейте через рековери.
Или выкладывайте свой framework-res.apk - ща организуем :)

Сообщение отредактировал 5152 - 09.12.12, 23:52



Реп: (257)
Помогите разобраться с меню настроек! пытаюсь прописать в меню настройки Lidroid, иконка в настройках есть, но при нажатии вылет настроек. Посмотрите что не так прописал. Прошивка XXLSC.

Прикрепленные файлы

Прикрепленный файлSecSettings.apk ( 28.42 МБ )
Прикрепленный файлLidroidSettings.apk ( 6.87 МБ )



Реп: (90)
Подскажите, как сменить цвет полоски регулировки яркости в шторке статусбара?

Сообщение отредактировал follor - 16.12.12, 21:48



Реп: (7365)
follor
За цвет полоски регулировки яркости в шторке статусбара отвечают картинки во фрейме
tw_progress_primary_holo_dark.9
tw_progress_primary_holo_light.9
tw_progress_secondary_holo_dark.9
tw_progress_secondary_holo_light.9
p.s. но при этом изменится цвет всех горизонтальных регуляторов.

Сообщение отредактировал sagitt67 - 16.12.12, 23:34



Реп: (204)
Редактируем цвет часов и даты в шторке:

Разбираем файл SystemUI.apk
Находим файл res/layout/tw_status_bar_expanded_header.xml
в нем строки:
Часы:
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff"
Дата:
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffcbcbcb"
Заменяем выделение красным на свой цвет.

Собираем SystemUI.apk, и закидываем обратно через Root Explorer к примеру.
Итог: Часы и дата изменены на голубой цвет, чего и нужно было достичь.
Прикрепленное изображение


За инфу спасибо finist1, сделал понаглядней (сам не сразу нашел под спойлером) может кому пригодится.

Сообщение отредактировал Neozar - 04.01.13, 00:14



Реп: (297)
Neozar @ 17.12.2012, 18:00 *
Редактируем цвет часов и даты в шторке:

А для цвета статусбара (текст часов, значки вайфая и связи) можно такой же рецепт?)))



Реп: (7365)
ZeuseZ
res/layout/tw_status_bar.xml
часы - <com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff00a6ff" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
Значки нужно переделывать самому stat_notify...png , stat_sys_...png (по пути SystemUI/drawable-hdpi - на моем аппарате)

Сообщение отредактировал sagitt67 - 17.12.12, 20:44


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 15:54