מדריך | הוספת תאריך עברי למסך הנעילה בf21 pro
-
נבדק על ידי ועובד. מי שרוצה שאצור גם לf22 pro שידבר איתי.
המדריך דורש:
רוט - תעשו אם אין לכם
מנהל MT - מנהל-MT-מתורגם.apk
שלב 1: יצירת מחלקות הלוגיקה.
בתוך MT Manager, פתח את
com.android.systemui, כנס ל-classes.dex(ב-Dex Editor Plus) וצור שני קבצים בנתיב/com/android/systemui:1.
HebrewDateHelper.smali
קובץ זה מחשב את השקיעה לפי הנוסחה המתמטית (Sin/Cos) ומפיק את הטקסט "מוצאי שבת" או "אור ל-"..class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח --- .method public static getSmartDate()Ljava/lang/String; .registers 4 # בדיקה האם עכשיו לילה לפי החישוב המתמטי invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 # יצירת לוח שנה עברי (ICU) new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה # בדיקה אם יום שבת (7 ב-Calendar) const/4 v2, 0x7 invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוסף יום (מעבר לתאריך של מחר) והוסף "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי (ICU) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v1, 0x0 # LONG style invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי (Sin/Cos) --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 # קבלת נתוני הזמן הנוכחיים const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב שעת שקיעה משוערת const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ ועדכון השעה invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 # המרת התוצאה לשעות ודקות double-to-int v0, v4 # שעת שקיעה int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות שקיעה # השוואה לזמן אמת const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end methodמי שרוצה ללא הצגת היום שייקח את הקוד שבספויילר:
.class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח (יום/לילה/מוצ"ש) --- .method public static getSmartDate()Ljava/lang/String; .registers 4 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה (אחרי שקיעה) const/4 v2, 0x7 # יום שבת ב-Calendar invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוספת יום והוספת "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי ללא יום בשבוע (MEDIUM style) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V # ערך 2 מייצג MEDIUM (תאריך בלבד) במקום 0 (LONG - הכולל יום) const/4 v1, 0x2 invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי משוער --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב גלי סינוס לקירוב שעת שקיעה לאורך השנה const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 double-to-int v0, v4 # שעות int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end method2.
HebrewDateReceiver.smali
קובץ זה "מקשיב" למערכת ומעדכן את התצוגה..class public Lcom/android/systemui/HebrewDateReceiver; .super Landroid/content/BroadcastReceiver; .field private mView:Landroid/widget/TextView; .method public constructor <init>(Landroid/widget/TextView;)V .registers 2 invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V iput-object p1, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; return-void .end method .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V .registers 4 iget-object v0, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V return-void .end method
שלב 2: הגדרת התצוגה
-
הוספת מזהה (ID): כנס ל-
resources.arsc->Arsc Editor->com.android.systemui>id -
כעת תראה רשימה ארוכה של שמות. לחץ על כפתור התפריט (3 נקודות) ובחר Add.
-
בתיבה שנפתחת, בשדה Name, רשום בדיוק:
hebrew_date_display. -
לחץ על אישור. יינתן ל id מספר (Hex) באופן אוטומטי. העתק את המספר הזה!
(הוא נראה בערך ככה: 0x7f0a0123). -
צא חזרה ולחץ על Save כדי לשמור את השינויים בקובץ ה-arsc.
-
הוספת האלמנט: בנתיב
/res/layout, פתח את הקובץ האחראי על מסך הנעילה (keyguard_status_view.xml) והוסף:<TextView android:id="@id/hebrew_date_display" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="16sp" android:layout_marginTop="4dp" />
שלב 3: הזרקת הרישום לעדכון בשקיעה.
כדי שהתאריך יבדוק כל דקה אם הגיעה השקיעה, נזריק את ה-Receiver לתוך המחלקה של מסך הנעילה (
KeyguardStatusView.smali) בתוך המתודהonAttachedToWindow:שימו לב לעדכן את ה- ID!
# 1. מציאת ה-View (החלף את ה-ID בערך ה-Hex ש-MT נותן לך) const v0, 0x7fXXXXXX invoke-virtual {p0, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View; move-result-object v0 check-cast v0, Landroid/widget/TextView; # 2. יצירת ה-Receiver והפילטר new-instance v1, Lcom/android/systemui/HebrewDateReceiver; invoke-direct {v1, v0}, Lcom/android/systemui/HebrewDateReceiver;-><init>(Landroid/widget/TextView;)V new-instance v2, Landroid/content/IntentFilter; invoke-direct {v2}, Landroid/content/IntentFilter;-><init>()V # 3. הוספת הפעולות (כולל TICK לעדכון בשקיעה) const-string v3, "android.intent.action.TIME_TICK" # עדכון כל דקה לבדיקת שקיעה invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v3, "android.intent.action.DATE_CHANGED" invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V # 4. רישום בפועל invoke-virtual {p0}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v3 invoke-virtual {v3, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; # 5. עדכון מיידי ראשוני invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V
שלב 4: סיום.
- שמור הכל: צא מ-Dex Editor Plus ושמור שינויים.
- עדכון: MT Manager יבקש לעדכן את ה-APK. לחץ אישור ואל תסמן את "חתימה אוטומטית"!
איני לוקח אחריות על שום נזק שיהיה כתוצאה ממדריך זה.
בהצלחה!
צילומסך -

אפשר גם לעשות ללא הצגת היום. מי שרוצה שיבקש.
-
-
נבדק על ידי ועובד. מי שרוצה שאצור גם לf22 pro שידבר איתי.
המדריך דורש:
רוט - תעשו אם אין לכם
מנהל MT - מנהל-MT-מתורגם.apk
שלב 1: יצירת מחלקות הלוגיקה.
בתוך MT Manager, פתח את
com.android.systemui, כנס ל-classes.dex(ב-Dex Editor Plus) וצור שני קבצים בנתיב/com/android/systemui:1.
HebrewDateHelper.smali
קובץ זה מחשב את השקיעה לפי הנוסחה המתמטית (Sin/Cos) ומפיק את הטקסט "מוצאי שבת" או "אור ל-"..class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח --- .method public static getSmartDate()Ljava/lang/String; .registers 4 # בדיקה האם עכשיו לילה לפי החישוב המתמטי invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 # יצירת לוח שנה עברי (ICU) new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה # בדיקה אם יום שבת (7 ב-Calendar) const/4 v2, 0x7 invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוסף יום (מעבר לתאריך של מחר) והוסף "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי (ICU) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v1, 0x0 # LONG style invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי (Sin/Cos) --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 # קבלת נתוני הזמן הנוכחיים const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב שעת שקיעה משוערת const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ ועדכון השעה invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 # המרת התוצאה לשעות ודקות double-to-int v0, v4 # שעת שקיעה int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות שקיעה # השוואה לזמן אמת const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end methodמי שרוצה ללא הצגת היום שייקח את הקוד שבספויילר:
.class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח (יום/לילה/מוצ"ש) --- .method public static getSmartDate()Ljava/lang/String; .registers 4 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה (אחרי שקיעה) const/4 v2, 0x7 # יום שבת ב-Calendar invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוספת יום והוספת "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי ללא יום בשבוע (MEDIUM style) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V # ערך 2 מייצג MEDIUM (תאריך בלבד) במקום 0 (LONG - הכולל יום) const/4 v1, 0x2 invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי משוער --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב גלי סינוס לקירוב שעת שקיעה לאורך השנה const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 double-to-int v0, v4 # שעות int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end method2.
HebrewDateReceiver.smali
קובץ זה "מקשיב" למערכת ומעדכן את התצוגה..class public Lcom/android/systemui/HebrewDateReceiver; .super Landroid/content/BroadcastReceiver; .field private mView:Landroid/widget/TextView; .method public constructor <init>(Landroid/widget/TextView;)V .registers 2 invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V iput-object p1, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; return-void .end method .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V .registers 4 iget-object v0, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V return-void .end method
שלב 2: הגדרת התצוגה
-
הוספת מזהה (ID): כנס ל-
resources.arsc->Arsc Editor->com.android.systemui>id -
כעת תראה רשימה ארוכה של שמות. לחץ על כפתור התפריט (3 נקודות) ובחר Add.
-
בתיבה שנפתחת, בשדה Name, רשום בדיוק:
hebrew_date_display. -
לחץ על אישור. יינתן ל id מספר (Hex) באופן אוטומטי. העתק את המספר הזה!
(הוא נראה בערך ככה: 0x7f0a0123). -
צא חזרה ולחץ על Save כדי לשמור את השינויים בקובץ ה-arsc.
-
הוספת האלמנט: בנתיב
/res/layout, פתח את הקובץ האחראי על מסך הנעילה (keyguard_status_view.xml) והוסף:<TextView android:id="@id/hebrew_date_display" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="16sp" android:layout_marginTop="4dp" />
שלב 3: הזרקת הרישום לעדכון בשקיעה.
כדי שהתאריך יבדוק כל דקה אם הגיעה השקיעה, נזריק את ה-Receiver לתוך המחלקה של מסך הנעילה (
KeyguardStatusView.smali) בתוך המתודהonAttachedToWindow:שימו לב לעדכן את ה- ID!
# 1. מציאת ה-View (החלף את ה-ID בערך ה-Hex ש-MT נותן לך) const v0, 0x7fXXXXXX invoke-virtual {p0, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View; move-result-object v0 check-cast v0, Landroid/widget/TextView; # 2. יצירת ה-Receiver והפילטר new-instance v1, Lcom/android/systemui/HebrewDateReceiver; invoke-direct {v1, v0}, Lcom/android/systemui/HebrewDateReceiver;-><init>(Landroid/widget/TextView;)V new-instance v2, Landroid/content/IntentFilter; invoke-direct {v2}, Landroid/content/IntentFilter;-><init>()V # 3. הוספת הפעולות (כולל TICK לעדכון בשקיעה) const-string v3, "android.intent.action.TIME_TICK" # עדכון כל דקה לבדיקת שקיעה invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v3, "android.intent.action.DATE_CHANGED" invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V # 4. רישום בפועל invoke-virtual {p0}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v3 invoke-virtual {v3, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; # 5. עדכון מיידי ראשוני invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V
שלב 4: סיום.
- שמור הכל: צא מ-Dex Editor Plus ושמור שינויים.
- עדכון: MT Manager יבקש לעדכן את ה-APK. לחץ אישור ואל תסמן את "חתימה אוטומטית"!
איני לוקח אחריות על שום נזק שיהיה כתוצאה ממדריך זה.
בהצלחה!
@מחנה-ידידים אפשר צילום מסך של התוצאה?
-
-
@מחנה-ידידים אפשר צילום מסך של התוצאה?
פוסט זה נמחק! -
פוסט זה נמחק!
@מחנה-ידידים כתב במדריך | הוספת תאריך עברי למסך הנעילה בf21 pro:
עדכנתי בפוסט:)
ולמה למען ה' מישהו שם לי דיסלייק?

@צוות-פיקוח אשמח לבירורכבר אין
-
צילומסך -

אפשר גם לעשות ללא הצגת היום. מי שרוצה שיבקש.
@מחנה-ידידים כתב במדריך | הוספת תאריך עברי למסך הנעילה בf21 pro:
אפשר גם לעשות ללא הצגת היום. מי שרוצה שיבקש.
נשמח..
-
@מחנה-ידידים כתב במדריך | הוספת תאריך עברי למסך הנעילה בf21 pro:
אפשר גם לעשות ללא הצגת היום. מי שרוצה שיבקש.
נשמח..
@שניאור-שמח אתה מבקש? תתן ל Ai שישנה לך! התכוונתי לכאלו שלא יודעים

-
נבדק על ידי ועובד. מי שרוצה שאצור גם לf22 pro שידבר איתי.
המדריך דורש:
רוט - תעשו אם אין לכם
מנהל MT - מנהל-MT-מתורגם.apk
שלב 1: יצירת מחלקות הלוגיקה.
בתוך MT Manager, פתח את
com.android.systemui, כנס ל-classes.dex(ב-Dex Editor Plus) וצור שני קבצים בנתיב/com/android/systemui:1.
HebrewDateHelper.smali
קובץ זה מחשב את השקיעה לפי הנוסחה המתמטית (Sin/Cos) ומפיק את הטקסט "מוצאי שבת" או "אור ל-"..class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח --- .method public static getSmartDate()Ljava/lang/String; .registers 4 # בדיקה האם עכשיו לילה לפי החישוב המתמטי invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 # יצירת לוח שנה עברי (ICU) new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה # בדיקה אם יום שבת (7 ב-Calendar) const/4 v2, 0x7 invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוסף יום (מעבר לתאריך של מחר) והוסף "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי (ICU) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v1, 0x0 # LONG style invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי (Sin/Cos) --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 # קבלת נתוני הזמן הנוכחיים const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב שעת שקיעה משוערת const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ ועדכון השעה invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 # המרת התוצאה לשעות ודקות double-to-int v0, v4 # שעת שקיעה int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות שקיעה # השוואה לזמן אמת const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end methodמי שרוצה ללא הצגת היום שייקח את הקוד שבספויילר:
.class public Lcom/android/systemui/HebrewDateHelper; .super Ljava/lang/Object; # --- מתודה ראשית לעדכון ה-TextView --- .method public static updateHebrewDisplay(Landroid/widget/TextView;)V .registers 2 if-nez p0, :cond_3 return-void :cond_3 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->getSmartDate()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V return-void .end method # --- לוגיקה חכמה לבחירת הנוסח (יום/לילה/מוצ"ש) --- .method public static getSmartDate()Ljava/lang/String; .registers 4 invoke-static {}, Lcom/android/systemui/HebrewDateHelper;->isAfterNightfall()Z move-result v0 new-instance v1, Landroid/icu/util/HebrewCalendar; invoke-direct {v1}, Landroid/icu/util/HebrewCalendar;-><init>()V if-eqz v0, :cond_30 # אם לילה (אחרי שקיעה) const/4 v2, 0x7 # יום שבת ב-Calendar invoke-virtual {v1, v2}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v3 if-ne v3, v2, :cond_20 const-string v0, "מוצאי שבת" return-object v0 :cond_20 # אם לילה ואינו מוצ"ש - הוספת יום והוספת "אור ל-" const/4 v2, 0x5 # DATE const/4 v3, 0x1 invoke-virtual {v1, v2, v3}, Landroid/icu/util/HebrewCalendar;->add(II)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_30 # אם יום (לפני שקיעה) invoke-static {v1}, Lcom/android/systemui/HebrewDateHelper;->formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- פורמט התאריך העברי ללא יום בשבוע (MEDIUM style) --- .method private static formatHebrew(Landroid/icu/util/HebrewCalendar;)Ljava/lang/String; .registers 4 new-instance v0, Landroid/icu/util/ULocale; const-string v1, "he_IL@calendar=hebrew" invoke-direct {v0, v1}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V # ערך 2 מייצג MEDIUM (תאריך בלבד) במקום 0 (LONG - הכולל יום) const/4 v1, 0x2 invoke-static {v1, v0}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v0 invoke-virtual {p0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v1 invoke-virtual {v0, v1}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v0 return-object v0 .end method # --- חישוב שקיעה מתמטי משוער --- .method private static isAfterNightfall()Z .registers 10 invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar; move-result-object v0 const/4 v1, 0x6 # DAY_OF_YEAR invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb # HOUR_OF_DAY invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc # MINUTE invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 # חישוב גלי סינוס לקירוב שעת שקיעה לאורך השנה const-wide v4, 0x400921fb54442d18L # 2 * PI const-wide/high16 v6, 0x4000000000000000L # 2.0 mul-double/2addr v4, v6 add-int/lit8 v6, v1, -0x50 int-to-double v6, v6 mul-double/2addr v4, v6 const-wide v6, 0x4076d00000000000L # 365.0 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL # 1.05 mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L # 18.28 (שעה בסיסית לשקיעה) add-double/2addr v4, v6 # בדיקת שעון קיץ invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v6 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v6, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 if-eqz v0, :cond_52 const-wide/high16 v6, 0x3ff0000000000000L # +1.0 add-double/2addr v4, v6 :cond_52 double-to-int v0, v4 # שעות int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L # 60.0 mul-double/2addr v4, v6 double-to-int v4, v4 # דקות const/4 v5, 0x1 if-le v2, v0, :cond_62 return v5 :cond_62 if-ne v2, v0, :cond_67 if-lt v3, v4, :cond_67 return v5 :cond_67 const/4 v0, 0x0 return v0 .end method2.
HebrewDateReceiver.smali
קובץ זה "מקשיב" למערכת ומעדכן את התצוגה..class public Lcom/android/systemui/HebrewDateReceiver; .super Landroid/content/BroadcastReceiver; .field private mView:Landroid/widget/TextView; .method public constructor <init>(Landroid/widget/TextView;)V .registers 2 invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V iput-object p1, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; return-void .end method .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V .registers 4 iget-object v0, p0, Lcom/android/systemui/HebrewDateReceiver;->mView:Landroid/widget/TextView; invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V return-void .end method
שלב 2: הגדרת התצוגה
-
הוספת מזהה (ID): כנס ל-
resources.arsc->Arsc Editor->com.android.systemui>id -
כעת תראה רשימה ארוכה של שמות. לחץ על כפתור התפריט (3 נקודות) ובחר Add.
-
בתיבה שנפתחת, בשדה Name, רשום בדיוק:
hebrew_date_display. -
לחץ על אישור. יינתן ל id מספר (Hex) באופן אוטומטי. העתק את המספר הזה!
(הוא נראה בערך ככה: 0x7f0a0123). -
צא חזרה ולחץ על Save כדי לשמור את השינויים בקובץ ה-arsc.
-
הוספת האלמנט: בנתיב
/res/layout, פתח את הקובץ האחראי על מסך הנעילה (keyguard_status_view.xml) והוסף:<TextView android:id="@id/hebrew_date_display" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="16sp" android:layout_marginTop="4dp" />
שלב 3: הזרקת הרישום לעדכון בשקיעה.
כדי שהתאריך יבדוק כל דקה אם הגיעה השקיעה, נזריק את ה-Receiver לתוך המחלקה של מסך הנעילה (
KeyguardStatusView.smali) בתוך המתודהonAttachedToWindow:שימו לב לעדכן את ה- ID!
# 1. מציאת ה-View (החלף את ה-ID בערך ה-Hex ש-MT נותן לך) const v0, 0x7fXXXXXX invoke-virtual {p0, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View; move-result-object v0 check-cast v0, Landroid/widget/TextView; # 2. יצירת ה-Receiver והפילטר new-instance v1, Lcom/android/systemui/HebrewDateReceiver; invoke-direct {v1, v0}, Lcom/android/systemui/HebrewDateReceiver;-><init>(Landroid/widget/TextView;)V new-instance v2, Landroid/content/IntentFilter; invoke-direct {v2}, Landroid/content/IntentFilter;-><init>()V # 3. הוספת הפעולות (כולל TICK לעדכון בשקיעה) const-string v3, "android.intent.action.TIME_TICK" # עדכון כל דקה לבדיקת שקיעה invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v3, "android.intent.action.DATE_CHANGED" invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V # 4. רישום בפועל invoke-virtual {p0}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v3 invoke-virtual {v3, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; # 5. עדכון מיידי ראשוני invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->updateHebrewDisplay(Landroid/widget/TextView;)V
שלב 4: סיום.
- שמור הכל: צא מ-Dex Editor Plus ושמור שינויים.
- עדכון: MT Manager יבקש לעדכן את ה-APK. לחץ אישור ואל תסמן את "חתימה אוטומטית"!
איני לוקח אחריות על שום נזק שיהיה כתוצאה ממדריך זה.
בהצלחה!
-
-
@שניאור-שמח אתה מבקש? תתן ל Ai שישנה לך! התכוונתי לכאלו שלא יודעים

@מחנה-ידידים חחח, אין לי כח לבקש ממנו..
ואני מאמין שעוד הרבה ירצו את זה..
אבל אם אתה לא תעשה את זה, אני יבקש ממנו -
@מחנה-ידידים יש הבדל בין המדריך שלך למדריך של @lilo159 פה
@אלוף-תימן כן, שם זה בדאמבדרויד כאן זה בגרסה הרגילה
-
@מחנה-ידידים חחח, אין לי כח לבקש ממנו..
ואני מאמין שעוד הרבה ירצו את זה..
אבל אם אתה לא תעשה את זה, אני יבקש ממנו@שניאור-שמח אני אעשה.
@אלוף-תימן זה לגרסה הרגילה וההוא לדמבדרואיד -
@אלוף-תימן כן, שם זה בדאמבדרויד כאן זה בגרסה הרגילה
@שניאור-שמח שתיהם בסוף אותו תוצאה כאילו שבמסך נעילה יש לוח עברי נכון
-
@שניאור-שמח שתיהם בסוף אותו תוצאה כאילו שבמסך נעילה יש לוח עברי נכון
@אלוף-תימן כן
-
@מחנה-ידידים כי המדריך השני עשיתי אותו לכמה נגנים אפילו אנדרואיד 10 עבד חלק המדריך שלך נראה יותר מסובך בדקת שאין דברים מיותרים במדריך שלך?
-
@מחנה-ידידים כי המדריך השני עשיתי אותו לכמה נגנים אפילו אנדרואיד 10 עבד חלק המדריך שלך נראה יותר מסובך בדקת שאין דברים מיותרים במדריך שלך?
@אלוף-תימן נראלי ששלו דווקא יותר מסובך...
-
@אלוף-תימן נראלי ששלו דווקא יותר מסובך...
-
@מחנה-ידידים חחח, אין לי כח לבקש ממנו..
ואני מאמין שעוד הרבה ירצו את זה..
אבל אם אתה לא תעשה את זה, אני יבקש ממנו@שניאור-שמח אני כרגע באנדרואיד. כנראה שיהיה בצהריים או בערב
-
@מחנה-ידידים אוקי אולי תוסיף במדריך שלך קישור למדריך שלו וש @lilo159 יוסיף במדריך שלו קישור למדריך שלך וכל אחד יראה מה יותר סבבה בשבילו
@אלוף-תימן נראה