Una volta modificati gli apk li flashi sulla rom senza wipe.
Visualizzazione stampabile
Molti file da Moddare risiedono nel framework-res.apk oltre che nella SystemUI.
Dovresti innanzitutto procurarti le PNG relative alla Rom che desideri emulare e sostituirli all'interno del tuo APK relativo dopo averlo correttamentye decompilato(Framework o SystemUI).
In relazione al tipo di Modding, Oltre alle PNG, ci saranno da modificare anche vari XLM, che contengono le info relative a svariate variabili grafiche.
Fa attenzione comunque. Questo thread è relativo al Galaxy S2. Le ultime mod fanno riferimento ad una Base Jelly Bean ufficiale Samsung.
PNG e XLM avranno Directory diverse rispetto al Firmware che monti sul tuo Note Neo.
Ch'io sappia Esiste per PC "Bluestacks", un Emulatore che ti permette di Virtualizzare un Sistema Android con KK a bordo.
Non potrai usufruirne, per file di Sistema almeno, se non hai quindi un Sistema Identico.
Per le Apps generiche funziona però. :)
Puoi installare lì l'APK modificato per verificarne l'assenza di errori.
Edit Later: Sorry per doppio Post, ma questo l'ho visto dopo. :)
Si, le icone le puoi anche sostituire con il rar, ma le ''.9'' sono icone condivise e necessiterebbero di dedicato programma per la loro modifica. Non accade nulla non usandolo, ma resta vero che l'APK che le contiene non sarà più decompilabile e quindi non più modificabile senza errore.
Mancano poi gli XML per un ''lavoro finito''. Poi..
Dipende anche da ciò che vuoi ottenere. :D
mi da comando errato.. non riesco a decompilare..
Salve,
domanda per Nicola78.
Per quel che riguarda la tua guida https://www.androidiani.com/forum/mo...ml#post5479629 volevo chiederti se una volta decompilato il secsetting.apk e andato in res/value/array.xml e aggiungere il nome delle png che andremo ad inserire sel systemUI.apk ci devo aggiungere anche quella stock (sia come <item>Stock</item> sia come png nel systemUi) oppure no in quando la stock va a leggere quella gia esistente di default?
Grazie in anticipo.
ok grazie,
ovviamente il nome che inserisco nel file array (stock) deve essere identico a quello della png o non importa?
e poi scusa l'ignoranza, ma la png stock che devo cercare nel public.xml per prendere l'id è notification_panel_bg oppure tw_quick_panel_notification_panel_bg
Vabbe cmq poco importa, ho provato con tutti e due i nomi ma il risultato non cambia. Mi dice sempre "Il programma Int. uten. sist. è stato arrestato" e la status bar è sempre assente.
Allego il file "dumpstate_sys_error.txt" che mi avevi chiesto.
https://drive.google.com/file/d/0B0j...ew?usp=sharing
Mi sono permesso di dargli una occhiata veloce nel frattempo che aspetto di iniziare a lavoro.
Un logcat generato direttamente dal device a mio avviso era più chiaro. Non sono riuscito a vedere l'errore che ti segnala il sistemui.
Comunque aspetta l'immenso Nicola che ne sa di più.
Ciao stopgian74 , controlla nel tuo file PhoneStatusBar dove ci sono I campi field, per interderci le linee dopo questa
# instance field
Controlla che tu abbia anche questa linea:
.field mIcons:Landroid/widget/RelativeLayout;
A quanto pare ti manca o l'hai cancellata per errore
Ecco qua nicola,
https://drive.google.com/file/d/0B0j...ew?usp=sharing
questo è il systemUI gia decompilato e gia integrato con la tua guida.
la mod della guida è integrata correttamente , dal logcat però non riesco a trovare altri eventuali problemi che riguardano il systemui e questo può essere dovuto al fatto che nei file smali del tuo systemui , o almeno in quelli che ho visto io, mancano le linee di riferimento come queste(sono come esempio)
quelle linee aiutano a determinare in quale posizione del file è presente un determinato comando ed eventualmente un errore, in generale questo comunque non comporta il malfunzionamento ma nel tuo caso sarebbero d'aiutocodice:.line 1287 <--------
:cond_0
sget-boolean v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->useTouchWizGUI:Z
if-eqz v0, :cond_1
.line 1288 <--------
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mQuickSettingScroller:Landroid/widget/HorizontalScrollView;
invoke-virtual {v0, v2, v2}, Landroid/widget/HorizontalScrollView;->smoothScrollTo(II)V
.line 1289 <---------
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mQuickSettingView:Lcom/android/systemui/statusbar/policy/quicksetting/QuickSettingPanel;
iget-boolean v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mExpanded:Z
invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/policy/quicksetting/QuickSettingPanel;->prepareTranslationX(Z)V
ora non sò se le hai tolte tu o cos'altro.
io non ho tolto nulla, mi sono limitato ad inserire le linee di codice come indicato nella tua guida e il fatto che mancavano le linee di richiamo lo avevo notato anche io ma non gli ho dato importanza visto che prima di fare la tua mod funzionava tutto; la loro mancanza l'avevo attribuita al fatto che questi file erano stati gia modificati in precedenza per integrare altre mod da chi ha fatto la rom..... ma a quanto pare non è cosi.
Più tardi provo il tuo systemui vediamo cosa ne viene fuori
Edit:@stopgian74, trovato l'inghippo, nella guida dove dice di aggiungere le seguenti linee nel .method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
qui non ho evidenziato in rosso anche la linea con move-object/from16 v0, p0 , ora qui tu hai due possibilità , la prima è quella di aggiungere quella linea, la seconda è di modificare v0 in p0 nella linea con invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->notificationpanelbackground()Vcodice:iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mNotificationPanel:Landroid/view/View;
move-object/from16 v0, p0
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->notificationpanelbackground()V
.line 558
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mNotificationPanel:Landroid/view/View;
new-instance v10, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$6;
mi scuso per l'incoveniente
aggiornata anche la guida
Non hai nessun bisogno di scusarti..... anzi..... sono io a chiederti scusa per tutto il disturbo arrecato.
Non posso che ringraziarti, ora correggo il mio sistemUI e poi faccio sapere.
Ancora mille grazie
edit: hahahaha..... scusa l'ironia ma mi viene da ridere perchè tra me e le cose elettroniche non scorre buon sangue ^_^
non me ne va mai dritta una.
Cmq per farla breve...... ho apportato la modifica è il problema è risolto, funziona tutto solo che quando vado a scegliere lo sfondo della tendina esso non cambia, resta sempre quella di default della rom cioè nera. Ora la domanda mi sorge spontanea..... siccome la rom è integrata con la lidroid, non è che le png si dovevano mettere li e non nel systemUI?
E se cio fosse cosi ci sarebbero da implementare altre righe di codice in altri file smali?
Ti sto facendo vivere una tragedia greca..... nicola.
Chiedo umilmente scusa :)
molto probabilmente c'è da modificare qualcosa anche nei file della Lidroid ma non nè sono sicuro perchè non la ho mai usata, da quanto mi ricordo essa va a gestire i toggles e non lo sfondo, può essere comunque che ci sia qualcosa che non va con il SecSettings
Ok provo a ridare un'occhiata al secsetting.
Premetto che anche qui come nel systemUI i file da modificare sono gia implementati con altre mod e ho riscontrato una difficolta maggiore a individuare la posizione e posizionare le linee di codice indicate nella guida di Nicola...... puo darsi che non le abbia posizionate nella maniera corretta data la mia ignoranza in materia.
[GUIDA][Mod]Cambiare in tempo reale la posizione dell'orologio nella schermata di sblocco
Fare un Nandroid Backup prima di effettuare operazioni di modding
Con questa mod viene spostato anche il widget meteo del lockscreen se attivato
Per realizzare questa mod vi serve:
SecSettings.apk
framework-res.apk
android.policy.jar
tool per decompilare e compilare come apktool 1.5.2
tool per l'editor di testo come notepad++
Parte con il SecSettings.apk:
Decompilare il SecSettings.apk ,andare in res/xml ,aprire con l'editor di testo il display_settings.xml e aggiungere le linee in rosso
Andare in res/value e aprire arrays.xml e aggiungere alla fine le seguenti linee alla finecodice:<CheckBoxPreference android:persistent="false" android:title="@string/display_saving" android:key="power_saving_mode" android:summary="@string/display_saving_mode_summary" />
<CheckBoxPreference android:persistent="false" android:title="@string/notification_pulse_title" android:key="notification_pulse" />
<PreferenceCategory android:title="@string/lockscreen_options">
<PreferenceScreen android:title="@string/lockscreen_clock_position">
<ListPreference android:entries="@array/lockscreen_clock_position_entries" android:title="@string/lockscreen_clock_position" android:key="clock_position" android:summary="@string/lockscreen_clock_position_summary" android:widgetLayout="@layout/round_more_icon" android:entryValues="@array/lockscreen_clock_position_values" />
</PreferenceScreen>
</PreferenceCategory>
Andare in res/value aprire strings.xml e aggiungere alla fine le seguenti lineecodice:<string-array name="lockscreen_clock_position_entries">
<item>In Alto-Sinistra</item>
<item>Al Centro-Sinistra</item>
<item>In Basso-Sinistra</item>
<item>In Alto-Centro</item>
<item>Al Centro-Centro</item>
<item>In Alto-Destra</item>
</string-array>
<string-array name="lockscreen_clock_position_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
Andare in res/value-it aprire strings.xml e aggiungere alla fine le seguenti lineecodice:<string name="lockscreen_options">Lockscreen Options</string>
<string name="lockscreen_clock_position">Clock Position</string>
<string name="lockscreen_clock_position_summary">Choose the position of the clock</string>
Andare in smali\com\android\settings\DisplaySettings.smali cercare la linea con # instance fields e aggiungere la seguente linea in rossocodice:<string name="lockscreen_options">Opzioni Schermata di Sblocco</string>
<string name="lockscreen_clock_position">Posizione Orologio</string>
<string name="lockscreen_clock_position_summary">Scegli la posizione dell\'orologio</string>
Nello stesso file trovare .method public onCreate e aggiungere le seguenti linee in rossocodice:.field private final mIntentReceiver:Landroid/content/BroadcastReceiver;
.field private mKeyBacklightmode:Landroid/preference/CheckBoxPreference;
.field private mLockClockPos:Landroid/preference/ListPreference;
field private mMultiWindowModeObserver:Landroid/database/ContentObserver;
.field private mMultiWindowPref:Landroid/preference/CheckBoxPreference;
Nello stesso file trovare .method public onPreferenceChange e aggiungere le linee in rosso, nelle linee in blu qualche spiegazionecodice:iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
.line 424
iget-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
invoke-virtual {v12, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V
const-string v12, "clock_position"
invoke-virtual {p0, v12}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v12
check-cast v12, Landroid/preference/ListPreference;
iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
const-string v12, "clock_position"
const/4 v13, 0x0
invoke-static {v8, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v12
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-static {v12}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-virtual {v13, v12}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-virtual {v13, p0}, Landroid/preference/SwitchPreferenceScreen;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V
.line 426
codice:const-string v2, "contextualpage_settings"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0,:cond_clockpos qui cambiare da cond_2 a cond_clockpos
.line 1089
check-cast p2, Ljava/lang/Boolean;
invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
if-eqz v0, :cond_e
Salvare tutti i cambiamenti e ricompilare il SecSettingscodice:.line 1100
const-string v1, "DisplaySettings"
const-string v3, "CONTEXTUALPAGE_SWITCH_CHANGED changed = false"
invoke-static {v1, v3}, Landroid/util/Log;->secD(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_7
:cond_11
move-wide v0, v4
goto/16 :goto_3
:cond_clockpos
iget-object v1, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
if-ne p1, v1, :cond_2
check-cast p2, Ljava/lang/String;
invoke-static {p2}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v0
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "clock_position"
invoke-static {v1, v2, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_4
.end method
Parte con il framework-res.apk
Decompilare il framework-res.apk e andare in res/layout ed aprire il file xml keyguard_circlelock_main cercare la riga e cambiarla da cosi
a cosicodice:<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" />
codice:<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" />
andare in res/layout-hdpi ed aprire il file xml keyguard_circlelock_clockwidget, cancellare tutte le linee e mettere le seguenti linee
il file continua nel prossimo postcodice:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/clock_root" android:paddingTop="4.0dip" android:paddingBottom="6.0dip" android:layout_width="match_parent" android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<view android:gravity="center" android:id="@id/clock_emergency" android:layout_width="fill_parent" android:layout_height="17.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$EmergencyCall">
<TextView android:textSize="12.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_emergency_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="0.25" />
</view>
<view android:id="@id/clock_clock" android:layout_width="match_parent" android:layout_height="match_parent" class="com.android.internal.policy.impl.sec.ClockWidget$Clock">
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_time_and_date" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="4.0dip">
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:id="@id/clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<ImageView android:id="@id/zzz_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_time_dot" />
<ImageView android:id="@id/zzz_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/clock_time" android:layout_alignBottom="@id/clock_time">
<TextView android:textSize="23.0dip" android:textColor="#fff8f8f8" android:id="@id/zzz_ampm" android:paddingLeft="3.0dip" android:paddingBottom="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
</RelativeLayout>
<TextView android:textSize="20.0dip" android:textStyle="bold" android:textColor="#fff6f7c9" android:gravity="bottom|center" android:id="@id/zzz_date_month" android:layout_width="wrap_content" android:layout_height="24.0dip" android:layout_marginTop="2.0dip" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
<view android:gravity="center" android:id="@id/clock_charge" android:paddingTop="5.0dip" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="24.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$Charge">
<ImageView android:id="@id/clock_charge_icon" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_charging" />
<ImageView android:id="@id/clock_cmas_icon" android:paddingRight="3.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_cmas" />
<TextView android:textSize="17.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_charge_text" android:layout_width="wrap_content" android:layout_height="24.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
</view>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/dualClock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="14.0dip">
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_local" android:layout_width="160.0dip" android:layout_height="wrap_content">
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_local_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_local_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_local_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/local_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
Salvare tutte le modifiche e ricompilare il framework-rescodice:<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_home" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:paddingBottom="2.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_home" />
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_home_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_home_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_home_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/home_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
</LinearLayout>
<view android:orientation="vertical" android:id="@id/clock_weather" android:paddingTop="8.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Weather">
<TextView android:textSize="16.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_weather_no_service" android:padding="15.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_weather_data_box" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:textSize="39.0dip" android:typeface="sans" android:textColor="#fff9f9f9" android:gravity="bottom" android:id="@id/clock_weather_temp" android:layout_width="wrap_content" android:layout_height="44.0dip" android:layout_marginTop="3.0dip" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<ImageView android:id="@id/clock_weather_temp_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_celsius" />
<ImageView android:id="@id/clock_weather_icon" android:layout_width="83.0dip" android:layout_height="49.0dip" android:scaleType="fitXY" />
</LinearLayout>
<TextView android:textSize="23.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_weather_city" android:layout_width="wrap_content" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" android:marqueeRepeatLimit="marquee_forever" />
<ImageView android:id="@id/clock_weather_logo_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_weather_logo" />
</LinearLayout>
</view>
</LinearLayout>
</view>
</LinearLayout>
Parte con il file android.policy.jar
Decompilare il file android.policy.jar , andare in com/android/internal/policy/impl/sec ed aprire il file smali ClockWidget$Clock, poi cercare il metodo
.method protected onFinishInflate()V e aggiungere le seguenti linee in rosso
Salvare tutti i cambiamenti e ricompilare il file android.policy, quindi mettere il SecSettings.apk , il framework-res.apk e android.policy.jar nel vostro dispositivo.codice:.method protected onFinishInflate()V
.registers 7
.prologue
const/4 v1, 0x1
.line 994
invoke-super {p0}, Landroid/widget/FrameLayout;->onFinishInflate()V
.line 996
const v0, 0x10202ca
invoke-virtual {p0, v0}, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/LinearLayout;
iget-object v2, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "clock_position"
const/4 v4, 0x0
invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
const v3, 0x1
if-eq v2, v3, :cond_0
const v3, 0x2
if-eq v2, v3, :cond_1
const v3, 0x3
if-eq v2, v3, :cond_2
const v3, 0x4
if-eq v2, v3, :cond_3
const v3, 0x5
if-eq v2, v3, :cond_4
const/16 v4, 0x70
goto:goto_set
:cond_0
const/16 v4, 0x10
goto:goto_set
:cond_1
const/16 v4, 0x50
goto:goto_set
:cond_2
const/16 v4, 0x01
goto:goto_set
:cond_3
const/16 v4, 0x11
goto:goto_set
:cond_4
const/16 v4, 0x05
:goto_set
invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setGravity(I)V
iput-object v0, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mSingleClock:Landroid/widget/LinearLayout;
.line 997
Salve ragazzi, apro questo post per fare un'osservazione di carattere tecnico.
Poco tempo fa provai ad implementare la mia rom con la mod https://www.androidiani.com/forum/mo...ml#post5479629 di cui ho discusso con Nicola78 nei post precedenti. Provato e riprovato ma il problema persiste sempre.
Giorni fa ho provato a seguire quest'altra guida https://www.androidiani.com/forum/mo...ml#post5909989.... risultato identico a quello di prima, non va.
A questo punto siccome ho provato a implementare queste mod sulla ROM YSF MS3 ho pensato che magari il problema potesse derivare dal fatto che sbagliavo a posizionare le linee di codice nei relativi file in quanto essendoci gia diverse mod non riuscivo a identificare la posizione esatta dove piazzarle; per questo motivo ho deciso di utilizzare file totalmente vergini. Ho preso il firmware originale I9100XWMS3, tramite la cucina mi sono ricavato la rom deodex, l'ho installata nel device per vedere se funzionasse e funzionava alla perfezione, e poi ho provato ad implementarci le mod di Nicola sopra indicate (ripeto ho utilizzato file vergini dove non era stata apportata nessuna modifica). Alla fine ottengo lo stesso identico risultato della YSF MS3:
- nella prima (cambio tendina in tempo reale) il device funziona correttamente, il toggle mi appare nel menu impostazioni, se ci pigio su mi da le opzioni di scelta delle tendine che ho inserito, solo che quando vado a selezionare quella che voglio impostare la tendina non cambia resta sempre quella iniziale;
- Nella seconda (port della lastView) appena inserisco i framework.jar e il framework2.jar nella rom tramite root-explorer il device mi si riavvia da solo, parte, fa l'ottimizzazione delle applicazioni, carica la rom e appena il mi esce la schermata iniziale iniziano ad uscire pop-up che dicono "il programma setup è stato arrestato" faccio ok e me ne esce un'altro "il programma phone è stato arrestato" faccio ok e me ne esce un'altro.... e cosi via all'infinito; in pratica nel dispositivo non funziona nulla.
Dopo ciò non funzionando nemmeno utilizzando file vergini le uniche spiegazioni sono 2;
1) sbaglio io a fare qualcosa (ho provato a fare le 2 mod seguendo le guide di Nicola per 4 volte ognuna e ho provato anche a fare altre mod credendo di sbagliare qualcosa nel ricompilare i file..... risultato le altre mod che ho fatto funzionano le due indicate sopra no)
2) nelle guide forse c'è qualcosa che non va infatti nella guida delle tendine Nicola mi disse che aveva trovato un qualcosa che non andava e lo aveva sistemato e in quel modo io risolsi parte del problema, ora nella guida della lastView mi sono saltati agli occhi due imperfezioni (premetto che io non ne capisco un tubo di linee di codice e chiedo scusa in anticipo se sto dicendo fesserie) che ora evidenzio:
Iniziamo con il SecSettings.apk:
Decompilare il SecSettings.apk ,andare in res/value e aprire arrays.xml e aggiungere alla fine le seguenti linee in rosso
Andare in framework2\classout\android\widget\ ed aprire il file AbsListView.smalicodice:<string-array name="bluetooth_class_of_device_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
<string-array name="audio_output_entries">
<item>Stereo</item>
<item>Surround</item>
</string-array>
<string-array name="listview_animation_entries"> <--- questa linea credo che dovrebbe essere colorata in rosso
<item>off</item> perche' è da aggiungere
<item>wave_left</item>
<item>wave_right</item>
<item>scale</item>
<item>alpha</item>
<item>stack_top</item>
<item>stack_bottom</item>
<item>unfold</item>
<item>fold</item>
<item>translate_left</item>
<item>translate_right</item>
<item>rotate</item>
</string-array>
<string-array name="listview_animation_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
</string-array>
<string-array name="listview_interpolator_entries">
<item>off</item>
<item>accelerate_interpolator</item>
<item>decelerate_interpolator</item>
<item>accelerate_decelerate_interpolator</item>
<item>anticipate_interpolator</item>
<item>overshoot_interpolator</item>
<item>anticipate_overshoot_interpolator</item>
<item>bounce_interpolator</item>
</string-array>
<string-array name="listview_interpolator_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
</string-array>
</resources>
cercare la seguente stringa
const v2, const v2, 0x10a0004
cercare la seguente stringacodice:<public type="anim" name="accelerate_decelerate_interpolator" id="0x010?????" />
const v2, const v2, 0x10a0007
e sostituire il valore 0x10a0007 con il
cercare la seguente stringacodice:<public type="anim" name="anticipate_interpolator" id="0x010?????" />
const v2, const v2, 0x10a0008
e sostituire il valore 0x10a0008 con il
cercare la seguente stringacodice:<public type="anim" name="overshoot_interpolator" id="0x010?????" />
const v2, const v2, 0x10a0009
e sostituire il valore 0x10a0009 con il
cercare la seguente stringacodice:<public type="anim" name="anticipate_overshoot_interpolator" id="0x010?????" />
const v2, const v2, 0x10a000a
e sostituire il valore 0x10a000a con il
Nelle stringhe da ricercare indicate qui sopra credo ci sia un const V2 in piu.....codice:<public type="anim" name="bounce_interpolator" id="0x010?????" />
Inoltre gli id da ricercare nel file public.xml del framework-res.apk che poi vanno sostituiti nelle stringhe indicate qui sopra sono praticamente uguali a quelli indicati nelle stringhe stesse, bisogna solo aggiungerci uno 0 davanti (const v2, 0x10a000a diventa const v2, 0x010a000a in cui 010a000a è l'id trovato nel public.xml del framework-res.apk)...... GIUSTO?
Preciso che nel fare la mod io ho considerato la stringa <string-array name="listview_animation_entries"> come rossa e quindi inserita, e ne doppi const V2, const V2 ho considerato un solo const V2.
Se possibile inviterei qualcuno che non ha le due mod sulla propria rom ad inserirle e vedere se vanno o se si riscontrano gli stessi miei problemi.
Mi scuso se mi sono dilungato e soprattutto la mia non è assolutamente una contestazione rivolta a qualcuno in particolare ma solo un modo per cercare di capire se sono io a sbagliare qualcosa o il problema dipende da altro..... tutto qui.
in che senso.... non capisco..... la rom che uso in cui ho provato a inserire le mod è la https://www.androidiani.com/forum/mo...rom-based.html..... la versione YSF_Rom_6.6 l'ho scritto nel post precedente.
No, è che leggo in Firma "Rom fatta tutta da me". Mi riferivo a quella. ;)
Edit. Grazie @gino66 per la tua sempre utile e gradevole presenza. :)
Ciao stopgian74 , per quanto riguarda la mod della listview animation hai ragione, nell'array.xml bisogna aggiungere anche quella linea indicata da te che io non ho evidenziato in rosso(correggerò), poi per il const v2 ripetuto 2 volte errore mio nel fare copia incolla(correggerò anche quello) grazie per la segnalazione.
Per quanto riguarda la risoluzione dei problemi io inizierei con la mod delle tendine.Hai ancora i file su cu hai fatto le modifiche ? cosi se le posti le controllo
Poi se riusciamo a risolvere passiamo alla listview animation