מדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro
-
בהמשך למדריך | הוספת תאריך עברי למסך הבית בדאמבדרויד

אז משום מה, אתם עדיין משתמשים בגרסה הרגילה של F21 PRO..
לא נורא, מתי שהוא גם אתם תתקדמו..בכל מקרה, לבינתיים:
כרגיל, הAI הוא המתכנת, אבל האחריות אצלו היא לא טעות סופר..
לשינויים:
האפליקציה שאנחנו עורכים היא הלאנצ'ר, שנמצא בנתיב:
/system_ext/priv-app/Launcher3QuickStepכל הקלאסים שנערכים או נוספים, נמצאים בנתיב:
com/android/launcher3- להוסיף את הקלאס HebrewDateHelper (בנתיב com/android/launcher3):
.class public Lcom/android/launcher3/HebrewDateHelper; .super Ljava/lang/Object; # direct methods .method public static getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; .registers 12 :try_start_0 new-instance v0, Landroid/icu/util/HebrewCalendar; invoke-direct {v0}, Landroid/icu/util/HebrewCalendar;-><init>()V new-instance v1, Landroid/icu/util/ULocale; const-string v2, "he_IL@calendar=hebrew" invoke-direct {v1, v2}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v2, 0x1 invoke-static {v2, v1}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v2 invoke-static {}, Lcom/android/launcher3/HebrewDateHelper;->isAfterNightfall()Z move-result v3 move v10, v3 invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v4 invoke-virtual {v2, v4}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v3 if-eqz v3, :cond_bc const/4 v4, 0x7 invoke-virtual {v0, v4}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 if-ne v5, v4, :cond_33 if-eqz v10, :cond_33 const-string/jumbo v4, "יום שבת" const-string/jumbo v5, "מוצאי שבת" invoke-virtual {v3, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; move-result-object v3 :cond_33 const/16 v4, 0x20 invoke-virtual {v3, v4}, Ljava/lang/String;->lastIndexOf(I)I move-result v4 const-string v8, "" const-string v9, "" const/4 v5, -0x1 if-eq v4, v5, :cond_4b const/4 v5, 0x0 invoke-virtual {v3, v5, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v8 add-int/lit8 v4, v4, 0x1 invoke-virtual {v3, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v9 :cond_4b const/4 v3, 0x2 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v4 const/4 v5, 0x5 const/4 v6, 0x1 invoke-virtual {v0, v5, v6}, Landroid/icu/util/HebrewCalendar;->add(II)V invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v5 invoke-virtual {v2, v5}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v6 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 const-string v0, ", " invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I move-result v0 const/4 v7, -0x1 if-eq v0, v7, :cond_70 add-int/lit8 v0, v0, 0x2 invoke-virtual {v6, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v6 :cond_70 const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->lastIndexOf(I)I move-result v0 if-eq v0, v7, :cond_7d const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_7d if-ne v4, v5, :cond_8c const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(I)I move-result v0 if-eq v0, v7, :cond_8c const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_8c new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; if-eqz v10, :cond_a7 const-string v2, " (אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, ") " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_af :cond_a7 const-string v2, " " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; :goto_af const-string v2, "\n" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, p0}, 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_bc new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, "\n" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, p0}, 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 :try_end_d1 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_d1} :catch_d1 :catch_d1 move-exception v0 return-object p0 .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 invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v4 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v4, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 const-wide v4, 0x400921fb54442d18L const-wide/high16 v6, 0x4000000000000000L 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 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L add-double/2addr v4, v6 if-eqz v0, :cond_48 const-wide/high16 v6, 0x3ff0000000000000L add-double/2addr v4, v6 :cond_48 double-to-int v0, v4 int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L mul-double/2addr v4, v6 double-to-int v4, v4 const/4 v5, 0x1 if-le v2, v0, :cond_56 return v5 :cond_56 if-ne v2, v0, :cond_5b if-lt v3, v4, :cond_5b return v5 :cond_5b const/4 v0, 0x0 return v0 .end methodאם אתם מעדיפים שהתאריך הלועזי יהיה למעלה, אז תקחו את הקוד שבספויילר במקום:
.class public Lcom/android/launcher3/HebrewDateHelper; .super Ljava/lang/Object; # direct methods .method public static getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; .registers 12 :try_start_0 new-instance v0, Landroid/icu/util/HebrewCalendar; invoke-direct {v0}, Landroid/icu/util/HebrewCalendar;-><init>()V new-instance v1, Landroid/icu/util/ULocale; const-string v2, "he_IL@calendar=hebrew" invoke-direct {v1, v2}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v2, 0x1 invoke-static {v2, v1}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v2 invoke-static {}, Lcom/android/launcher3/HebrewDateHelper;->isAfterNightfall()Z move-result v3 move v10, v3 invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v4 invoke-virtual {v2, v4}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v3 if-eqz v3, :cond_bc const/4 v4, 0x7 invoke-virtual {v0, v4}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 if-ne v5, v4, :cond_33 if-eqz v10, :cond_33 const-string/jumbo v4, "יום שבת" const-string/jumbo v5, "מוצאי שבת" invoke-virtual {v3, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; move-result-object v3 :cond_33 const/16 v4, 0x20 invoke-virtual {v3, v4}, Ljava/lang/String;->lastIndexOf(I)I move-result v4 const-string v8, "" const-string v9, "" const/4 v5, -0x1 if-eq v4, v5, :cond_4b const/4 v5, 0x0 invoke-virtual {v3, v5, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v8 add-int/lit8 v4, v4, 0x1 invoke-virtual {v3, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v9 :cond_4b const/4 v3, 0x2 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v4 const/4 v5, 0x5 const/4 v6, 0x1 invoke-virtual {v0, v5, v6}, Landroid/icu/util/HebrewCalendar;->add(II)V invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v5 invoke-virtual {v2, v5}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v6 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 const-string v0, ", " invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I move-result v0 const/4 v7, -0x1 if-eq v0, v7, :cond_70 add-int/lit8 v0, v0, 0x2 invoke-virtual {v6, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v6 :cond_70 const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->lastIndexOf(I)I move-result v0 if-eq v0, v7, :cond_7d const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_7d if-ne v4, v5, :cond_8c const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(I)I move-result v0 if-eq v0, v7, :cond_8c const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_8c new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, "\n" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; if-eqz v10, :cond_a7 const-string v2, " (אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, ") " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_af :cond_a7 const-string v2, " " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; :goto_af invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_bc new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, "\n" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v3}, 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 :try_end_d1 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_d1} :catch_d1 :catch_d1 move-exception v0 return-object p0 .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 invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v4 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v4, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 const-wide v4, 0x400921fb54442d18L const-wide/high16 v6, 0x4000000000000000L 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 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L add-double/2addr v4, v6 if-eqz v0, :cond_48 const-wide/high16 v6, 0x3ff0000000000000L add-double/2addr v4, v6 :cond_48 double-to-int v0, v4 int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L mul-double/2addr v4, v6 double-to-int v4, v4 const/4 v5, 0x1 if-le v2, v0, :cond_56 return v5 :cond_56 if-ne v2, v0, :cond_5b if-lt v3, v4, :cond_5b return v5 :cond_5b const/4 v0, 0x0 return v0 .end method- להוסיף את הקלאס (באותו נתיב):
WorkspaceDateReceiver
.class public Lcom/android/launcher3/WorkspaceDateReceiver; .super Landroid/content/BroadcastReceiver; .field private final mWorkspace:Lcom/android/launcher3/Workspace; .method public constructor <init>(Lcom/android/launcher3/Workspace;)V .registers 2 .line 1 invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V .line 2 iput-object p1, p0, Lcom/android/launcher3/WorkspaceDateReceiver;->mWorkspace:Lcom/android/launcher3/Workspace; .line 3 return-void .end method .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V .registers 3 .line 1 iget-object p1, p0, Lcom/android/launcher3/WorkspaceDateReceiver;->mWorkspace:Lcom/android/launcher3/Workspace; if-eqz p1, :cond_end .line 2 invoke-virtual {p1}, Lcom/android/launcher3/Workspace;->refreshTime()V :cond_end return-void .end method- בקלאס Workspace (שנמצא בנתיב כדלעיל):
יחסית בתחילת הקלאס (בערך שורה 46)
אחרי השורה
# static fieldsלהוסיף את השורה הזאת:
.field private mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver;- באותו קלאס
במתודה insertNewWorkspaceScreen (הראשונה, נראית כך):
.method public insertNewWorkspaceScreen(II)Lcom/android/launcher3/CellLayout;מתחת לשורה .line 728 ישנה השורה:
invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setFocusable(Z)Vמיד אחריה להוסיף את השורות:
# הזרקה: 2 שורות ומרכוז invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setSingleLine(Z)V const/4 v7, 0x2 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setMaxLines(I)V const/16 v7, 0x11 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setGravity(I)V
אמור להראות כך:.line 728 invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setFocusable(Z)V # הזרקה: 2 שורות ומרכוז invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setSingleLine(Z)V const/4 v7, 0x2 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setMaxLines(I)V const/16 v7, 0x11 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setGravity(I)V- באותו קלאס
במתודה refreshTime
א. לשנות את המתודה לpublic
ב. לחפש את השורה הזאת:
invoke-direct/range {p0 .. p0}, Lcom/android/launcher3/Workspace;->refreshTime()Vולהחליף עם זאת:
invoke-virtual/range {p0 .. p0}, Lcom/android/launcher3/Workspace;->refreshTime()Vג. מיד אחרי השורה הזאת (היא נמצאת פעמיים, לבצע על שני השורות שתמצאו):
sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String;להוסיף את הקוד:
invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1
בסוף המתודה אמורה להראות כך:.method public refreshTime()V .registers 4 .line 779 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v0 invoke-static {v0}, Lcom/android/launcher3/Workspace$Patterns;->update(Landroid/content/Context;)V .line 780 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String; # הזרקת התאריך העברי לפורמט 24 שעות invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat24Hour(Ljava/lang/CharSequence;)V .line 781 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String; # הזרקת התאריך העברי לפורמט 12 שעות invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat12Hour(Ljava/lang/CharSequence;)V .line 783 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mClockView:Landroid/widget/TextClock; .line 784 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getResources()Landroid/content/res/Resources; move-result-object v1 sget v2, Lcom/android/launcher3/R$dimen;->am_pm_widget_font_size:I invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getDimension(I)F move-result v1 float-to-int v1, v1 sget-object v2, Lcom/android/launcher3/Workspace$Patterns;->clockView12:Ljava/lang/String; .line 783 invoke-virtual {p0, v1, v2}, Lcom/android/launcher3/Workspace;->updateAmPmTextSize(ILjava/lang/String;)Ljava/lang/CharSequence; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat12Hour(Ljava/lang/CharSequence;)V .line 785 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mClockView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->clockView24:Ljava/lang/String; invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat24Hour(Ljava/lang/CharSequence;)V .line 788 return-void .end method- במתודה onAttachedToWindow
א. להוסיף רגיסטר אחד (להחליף מ3 ל4).
ב. בסוף המתודה ממש לפני return-void, להוסיף את הקוד:
# הזרקה: רישום המאזין new-instance v0, Lcom/android/launcher3/WorkspaceDateReceiver; invoke-direct {v0, p0}, Lcom/android/launcher3/WorkspaceDateReceiver;-><init>(Lcom/android/launcher3/Workspace;)V iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; new-instance v1, Landroid/content/IntentFilter; invoke-direct {v1}, Landroid/content/IntentFilter;-><init>()V const-string v2, "android.intent.action.TIME_TICK" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIME_SET" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIMEZONE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.DATE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v2 invoke-virtual {v2, v0, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
בסוף המתודה אמורה להראות כך:.method protected onAttachedToWindow()V .registers 4 .line 1490 invoke-super {p0}, Lcom/android/launcher3/PagedView;->onAttachedToWindow()V .line 1491 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mWallpaperOffset:Lcom/android/launcher3/util/WallpaperOffsetInterpolator; invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getWindowToken()Landroid/os/IBinder; move-result-object v1 invoke-virtual {v0, v1}, Lcom/android/launcher3/util/WallpaperOffsetInterpolator;->setWindowToken(Landroid/os/IBinder;)V .line 1492 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->computeScroll()V # רישום המאזין לאירועי שעון new-instance v0, Lcom/android/launcher3/WorkspaceDateReceiver; invoke-direct {v0, p0}, Lcom/android/launcher3/WorkspaceDateReceiver;-><init>(Lcom/android/launcher3/Workspace;)V iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; new-instance v1, Landroid/content/IntentFilter; invoke-direct {v1}, Landroid/content/IntentFilter;-><init>()V const-string v2, "android.intent.action.TIME_TICK" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIME_SET" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIMEZONE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.DATE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v2 invoke-virtual {v2, v0, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; .line 1493 return-void .end method- במתודה onDetachedFromWindow (נמצאת ממש אחרי המתודה הקודמת)
כמו קודם, בסוף המתודה ממש לפני הreturn-void, להוסיף את הקוד הבא:
# הזרקה: ביטול המאזין iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; if-eqz v0, :cond_unregister_end invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v1 invoke-virtual {v1, v0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V const/4 v0, 0x0 iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; :cond_unregister_end
בסוף המתודה אמורה להראות כך:.method protected onDetachedFromWindow()V .registers 3 .line 1496 invoke-super {p0}, Lcom/android/launcher3/PagedView;->onDetachedFromWindow()V .line 1497 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mWallpaperOffset:Lcom/android/launcher3/util/WallpaperOffsetInterpolator; const/4 v1, 0x0 invoke-virtual {v0, v1}, Lcom/android/launcher3/util/WallpaperOffsetInterpolator;->setWindowToken(Landroid/os/IBinder;)V # מחיקת המאזין כדי למנוע דליפת זיכרון iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; if-eqz v0, :cond_unregister_end invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v1 invoke-virtual {v1, v0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V const/4 v0, 0x0 iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; :cond_unregister_end .line 1498 return-void .end methodבהצלחה!
-
@חד-גדיא לפי הבנתי המועטה, ישנה ספריה מובנית באנדרואיד שנקראת icu, ומשם נשאב התאריך העברי.
@lilo159 א' תודה, עובד לי.
ב' הAi שם גרשיים של אנגלית.
איך לתקן עכשיו לגרשיים של עברית? -
@lilo159 א' תודה, עובד לי.
ב' הAi שם גרשיים של אנגלית.
איך לתקן עכשיו לגרשיים של עברית?@מחנה-ידידים על איזה גרשיים אתה מדבר?
-
@מחנה-ידידים על איזה גרשיים אתה מדבר?
-
@מחנה-ידידים אתה בטוח שזה לא אמור להיות ככה?
לפי ג׳ימני זה כן טוב -
@מחנה-ידידים אתה בטוח שזה לא אמור להיות ככה?
לפי ג׳ימני זה כן טוב@שניאור-שמח זה " בעברית וזה ״ באנגלית
ג'מיני
בעברית ובאנגלית נעשה שימוש בסימנים שנראים דומים, אך יש ביניהם הבדלים טיפולוגיים ומקצועיים (במיוחד בעולם הטיפוגרפיה והתכנות).
להלן הסימנים:
1. גרשיים "סטנדרטיים" (לשימוש כללי ותכנות)
אלו הגרשיים שנמצאים במקלדת לצד מקש ה-Enter. הם ישרים ומשמשים כברירת מחדל בשתי השפות ברוב הממשקים הדיגיטליים:
- גרשיים כפולים:
" - גרש בודד:
'
2. גרשיים עבריים (טיפוגרפיים)
על פי כללי האקדמיה ללשון העברית, הגרשיים צריכים להיות נטויים (אלכסוניים) ולהיכתב בחלקו העליון של השורה.
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
U+05F4) - גרש (לקיצורים): ׳ (תו יוניקוד
U+05F3)
הערה: בגרפיקה ובעיצוב ספרים בעברית, משתמשים בתווים הייחודיים האלו כדי להבדיל בין ציטוט לבין קיצור או ראשי תיבות.
3. גרשיים אנגליים (Smart Quotes)
באנגלית מקצועית (ספרות, עיתונות) משתמשים בגרשיים "מעוקלים" או "חכמים" שמשתנים לפי תחילת או סוף הציטוט:
- גרשיים כפולים (פתיחה וסגירה): “ ”
- גרשיים בודדים (פתיחה וסגירה): ‘ ’
טבלת ריכוז
סוג סימן כפול סימן בודד מקלדת/דיגיטלי "'עברית תקנית ״ ׳ אנגלית (טיפוגרפי) “ ” ‘ ’ - גרשיים כפולים:
-
@שניאור-שמח זה " בעברית וזה ״ באנגלית
ג'מיני
בעברית ובאנגלית נעשה שימוש בסימנים שנראים דומים, אך יש ביניהם הבדלים טיפולוגיים ומקצועיים (במיוחד בעולם הטיפוגרפיה והתכנות).
להלן הסימנים:
1. גרשיים "סטנדרטיים" (לשימוש כללי ותכנות)
אלו הגרשיים שנמצאים במקלדת לצד מקש ה-Enter. הם ישרים ומשמשים כברירת מחדל בשתי השפות ברוב הממשקים הדיגיטליים:
- גרשיים כפולים:
" - גרש בודד:
'
2. גרשיים עבריים (טיפוגרפיים)
על פי כללי האקדמיה ללשון העברית, הגרשיים צריכים להיות נטויים (אלכסוניים) ולהיכתב בחלקו העליון של השורה.
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
U+05F4) - גרש (לקיצורים): ׳ (תו יוניקוד
U+05F3)
הערה: בגרפיקה ובעיצוב ספרים בעברית, משתמשים בתווים הייחודיים האלו כדי להבדיל בין ציטוט לבין קיצור או ראשי תיבות.
3. גרשיים אנגליים (Smart Quotes)
באנגלית מקצועית (ספרות, עיתונות) משתמשים בגרשיים "מעוקלים" או "חכמים" שמשתנים לפי תחילת או סוף הציטוט:
- גרשיים כפולים (פתיחה וסגירה): “ ”
- גרשיים בודדים (פתיחה וסגירה): ‘ ’
טבלת ריכוז
סוג סימן כפול סימן בודד מקלדת/דיגיטלי "'עברית תקנית ״ ׳ אנגלית (טיפוגרפי) “ ” ‘ ’ 
- גרשיים כפולים:
-
@שניאור-שמח זה " בעברית וזה ״ באנגלית
ג'מיני
בעברית ובאנגלית נעשה שימוש בסימנים שנראים דומים, אך יש ביניהם הבדלים טיפולוגיים ומקצועיים (במיוחד בעולם הטיפוגרפיה והתכנות).
להלן הסימנים:
1. גרשיים "סטנדרטיים" (לשימוש כללי ותכנות)
אלו הגרשיים שנמצאים במקלדת לצד מקש ה-Enter. הם ישרים ומשמשים כברירת מחדל בשתי השפות ברוב הממשקים הדיגיטליים:
- גרשיים כפולים:
" - גרש בודד:
'
2. גרשיים עבריים (טיפוגרפיים)
על פי כללי האקדמיה ללשון העברית, הגרשיים צריכים להיות נטויים (אלכסוניים) ולהיכתב בחלקו העליון של השורה.
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
U+05F4) - גרש (לקיצורים): ׳ (תו יוניקוד
U+05F3)
הערה: בגרפיקה ובעיצוב ספרים בעברית, משתמשים בתווים הייחודיים האלו כדי להבדיל בין ציטוט לבין קיצור או ראשי תיבות.
3. גרשיים אנגליים (Smart Quotes)
באנגלית מקצועית (ספרות, עיתונות) משתמשים בגרשיים "מעוקלים" או "חכמים" שמשתנים לפי תחילת או סוף הציטוט:
- גרשיים כפולים (פתיחה וסגירה): “ ”
- גרשיים בודדים (פתיחה וסגירה): ‘ ’
טבלת ריכוז
סוג סימן כפול סימן בודד מקלדת/דיגיטלי "'עברית תקנית ״ ׳ אנגלית (טיפוגרפי) “ ” ‘ ’ @מחנה-ידידים כתב במדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro:
@שניאור-שמח זה " בעברית וזה ״ באנגלית
ג'מיני
2. גרשיים עבריים (טיפוגרפיים)
על פי כללי האקדמיה ללשון העברית, הגרשיים צריכים להיות נטויים (אלכסוניים) ולהיכתב בחלקו העליון של השורה.
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
U+05F4) - גרש (לקיצורים): ׳ (תו יוניקוד
U+05F3)
| עברית תקנית | ״ | ׳ |
נו, תראה מה הוא רשם לך..
זה כמו שיש עכשיו - גרשיים כפולים:
-
@מחנה-ידידים כתב במדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro:
@שניאור-שמח זה " בעברית וזה ״ באנגלית
ג'מיני
2. גרשיים עבריים (טיפוגרפיים)
על פי כללי האקדמיה ללשון העברית, הגרשיים צריכים להיות נטויים (אלכסוניים) ולהיכתב בחלקו העליון של השורה.
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
U+05F4) - גרש (לקיצורים): ׳ (תו יוניקוד
U+05F3)
| עברית תקנית | ״ | ׳ |
נו, תראה מה הוא רשם לך..
זה כמו שיש עכשיו@שניאור-שמח כתב במדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro:
- גרשיים עבריים (טיפוגרפיים)
טִיפּוֹגְרָפִי
תֹּאַר
הַשַּׁיָּךְ לַדְּפוּס, דְּפוּסִיהכוונה לעברי רגיל כמו בתמונה השניה - מ www.compart.com
- גרשיים (לראשי תיבות): ״ (תו יוניקוד
-
@שניאור-שמח כתב במדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro:
- גרשיים עבריים (טיפוגרפיים)
טִיפּוֹגְרָפִי
תֹּאַר
הַשַּׁיָּךְ לַדְּפוּס, דְּפוּסִיהכוונה לעברי רגיל כמו בתמונה השניה - מ www.compart.com
@מחנה-ידידים טוב, לא יודע מה אתה רוצה
ששלחתי תמונה של התאריך הוא אמר שזה טוב..@מישהו12 אתה מבין בזה? יש לך מושג?
-
@מחנה-ידידים טוב, לא יודע מה אתה רוצה
ששלחתי תמונה של התאריך הוא אמר שזה טוב..@מישהו12 אתה מבין בזה? יש לך מושג?
@שניאור-שמח אתה רואה בעצמך שתו יוניקוד U+05F4 מוגדר כ"עברי". אני סומך על www.compart.com יותר מעל ג'מיני...
-
@שניאור-שמח אתה רואה בעצמך שתו יוניקוד U+05F4 מוגדר כ"עברי". אני סומך על www.compart.com יותר מעל ג'מיני...
@מחנה-ידידים @שניאור-שמח קצת סטיתם מהנושא.
וזה לא נשמע לי כזה קריטי גרשיים כאלו או כאלו. לא ככה? -
@מחנה-ידידים @שניאור-שמח קצת סטיתם מהנושא.
וזה לא נשמע לי כזה קריטי גרשיים כאלו או כאלו. לא ככה?@נוחעם-FM טוב, צודק.
השאלה שלי היא: מה המיקום של הסטרינג שאחראי לגרשיים. -
בהמשך למדריך | הוספת תאריך עברי למסך הבית בדאמבדרויד

אז משום מה, אתם עדיין משתמשים בגרסה הרגילה של F21 PRO..
לא נורא, מתי שהוא גם אתם תתקדמו..בכל מקרה, לבינתיים:
כרגיל, הAI הוא המתכנת, אבל האחריות אצלו היא לא טעות סופר..
לשינויים:
האפליקציה שאנחנו עורכים היא הלאנצ'ר, שנמצא בנתיב:
/system_ext/priv-app/Launcher3QuickStepכל הקלאסים שנערכים או נוספים, נמצאים בנתיב:
com/android/launcher3- להוסיף את הקלאס HebrewDateHelper (בנתיב com/android/launcher3):
.class public Lcom/android/launcher3/HebrewDateHelper; .super Ljava/lang/Object; # direct methods .method public static getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; .registers 12 :try_start_0 new-instance v0, Landroid/icu/util/HebrewCalendar; invoke-direct {v0}, Landroid/icu/util/HebrewCalendar;-><init>()V new-instance v1, Landroid/icu/util/ULocale; const-string v2, "he_IL@calendar=hebrew" invoke-direct {v1, v2}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v2, 0x1 invoke-static {v2, v1}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v2 invoke-static {}, Lcom/android/launcher3/HebrewDateHelper;->isAfterNightfall()Z move-result v3 move v10, v3 invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v4 invoke-virtual {v2, v4}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v3 if-eqz v3, :cond_bc const/4 v4, 0x7 invoke-virtual {v0, v4}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 if-ne v5, v4, :cond_33 if-eqz v10, :cond_33 const-string/jumbo v4, "יום שבת" const-string/jumbo v5, "מוצאי שבת" invoke-virtual {v3, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; move-result-object v3 :cond_33 const/16 v4, 0x20 invoke-virtual {v3, v4}, Ljava/lang/String;->lastIndexOf(I)I move-result v4 const-string v8, "" const-string v9, "" const/4 v5, -0x1 if-eq v4, v5, :cond_4b const/4 v5, 0x0 invoke-virtual {v3, v5, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v8 add-int/lit8 v4, v4, 0x1 invoke-virtual {v3, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v9 :cond_4b const/4 v3, 0x2 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v4 const/4 v5, 0x5 const/4 v6, 0x1 invoke-virtual {v0, v5, v6}, Landroid/icu/util/HebrewCalendar;->add(II)V invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v5 invoke-virtual {v2, v5}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v6 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 const-string v0, ", " invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I move-result v0 const/4 v7, -0x1 if-eq v0, v7, :cond_70 add-int/lit8 v0, v0, 0x2 invoke-virtual {v6, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v6 :cond_70 const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->lastIndexOf(I)I move-result v0 if-eq v0, v7, :cond_7d const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_7d if-ne v4, v5, :cond_8c const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(I)I move-result v0 if-eq v0, v7, :cond_8c const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_8c new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; if-eqz v10, :cond_a7 const-string v2, " (אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, ") " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_af :cond_a7 const-string v2, " " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; :goto_af const-string v2, "\n" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, p0}, 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_bc new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, "\n" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, p0}, 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 :try_end_d1 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_d1} :catch_d1 :catch_d1 move-exception v0 return-object p0 .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 invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v4 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v4, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 const-wide v4, 0x400921fb54442d18L const-wide/high16 v6, 0x4000000000000000L 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 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L add-double/2addr v4, v6 if-eqz v0, :cond_48 const-wide/high16 v6, 0x3ff0000000000000L add-double/2addr v4, v6 :cond_48 double-to-int v0, v4 int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L mul-double/2addr v4, v6 double-to-int v4, v4 const/4 v5, 0x1 if-le v2, v0, :cond_56 return v5 :cond_56 if-ne v2, v0, :cond_5b if-lt v3, v4, :cond_5b return v5 :cond_5b const/4 v0, 0x0 return v0 .end methodאם אתם מעדיפים שהתאריך הלועזי יהיה למעלה, אז תקחו את הקוד שבספויילר במקום:
.class public Lcom/android/launcher3/HebrewDateHelper; .super Ljava/lang/Object; # direct methods .method public static getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; .registers 12 :try_start_0 new-instance v0, Landroid/icu/util/HebrewCalendar; invoke-direct {v0}, Landroid/icu/util/HebrewCalendar;-><init>()V new-instance v1, Landroid/icu/util/ULocale; const-string v2, "he_IL@calendar=hebrew" invoke-direct {v1, v2}, Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V const/4 v2, 0x1 invoke-static {v2, v1}, Landroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; move-result-object v2 invoke-static {}, Lcom/android/launcher3/HebrewDateHelper;->isAfterNightfall()Z move-result v3 move v10, v3 invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v4 invoke-virtual {v2, v4}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v3 if-eqz v3, :cond_bc const/4 v4, 0x7 invoke-virtual {v0, v4}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 if-ne v5, v4, :cond_33 if-eqz v10, :cond_33 const-string/jumbo v4, "יום שבת" const-string/jumbo v5, "מוצאי שבת" invoke-virtual {v3, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; move-result-object v3 :cond_33 const/16 v4, 0x20 invoke-virtual {v3, v4}, Ljava/lang/String;->lastIndexOf(I)I move-result v4 const-string v8, "" const-string v9, "" const/4 v5, -0x1 if-eq v4, v5, :cond_4b const/4 v5, 0x0 invoke-virtual {v3, v5, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v8 add-int/lit8 v4, v4, 0x1 invoke-virtual {v3, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v9 :cond_4b const/4 v3, 0x2 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v4 const/4 v5, 0x5 const/4 v6, 0x1 invoke-virtual {v0, v5, v6}, Landroid/icu/util/HebrewCalendar;->add(II)V invoke-virtual {v0}, Landroid/icu/util/HebrewCalendar;->getTime()Ljava/util/Date; move-result-object v5 invoke-virtual {v2, v5}, Landroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; move-result-object v6 invoke-virtual {v0, v3}, Landroid/icu/util/HebrewCalendar;->get(I)I move-result v5 const-string v0, ", " invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I move-result v0 const/4 v7, -0x1 if-eq v0, v7, :cond_70 add-int/lit8 v0, v0, 0x2 invoke-virtual {v6, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v6 :cond_70 const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->lastIndexOf(I)I move-result v0 if-eq v0, v7, :cond_7d const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_7d if-ne v4, v5, :cond_8c const/16 v0, 0x20 invoke-virtual {v6, v0}, Ljava/lang/String;->indexOf(I)I move-result v0 if-eq v0, v7, :cond_8c const/4 v2, 0x0 invoke-virtual {v6, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; move-result-object v6 :cond_8c new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, "\n" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; if-eqz v10, :cond_a7 const-string v2, " (אור ל-" invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v2, ") " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_af :cond_a7 const-string v2, " " invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; :goto_af invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_bc new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, "\n" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0, v3}, 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 :try_end_d1 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_d1} :catch_d1 :catch_d1 move-exception v0 return-object p0 .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 invoke-virtual {v0, v1}, Ljava/util/Calendar;->get(I)I move-result v1 const/16 v2, 0xb invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I move-result v2 const/16 v3, 0xc invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I move-result v3 invoke-virtual {v0}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; move-result-object v4 invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date; move-result-object v0 invoke-virtual {v4, v0}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z move-result v0 const-wide v4, 0x400921fb54442d18L const-wide/high16 v6, 0x4000000000000000L 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 div-double/2addr v4, v6 invoke-static {v4, v5}, Ljava/lang/Math;->sin(D)D move-result-wide v4 const-wide v6, 0x3ff0cccccccccccdL mul-double/2addr v4, v6 const-wide v6, 0x403247ae147ae148L add-double/2addr v4, v6 if-eqz v0, :cond_48 const-wide/high16 v6, 0x3ff0000000000000L add-double/2addr v4, v6 :cond_48 double-to-int v0, v4 int-to-double v6, v0 sub-double/2addr v4, v6 const-wide v6, 0x404e000000000000L mul-double/2addr v4, v6 double-to-int v4, v4 const/4 v5, 0x1 if-le v2, v0, :cond_56 return v5 :cond_56 if-ne v2, v0, :cond_5b if-lt v3, v4, :cond_5b return v5 :cond_5b const/4 v0, 0x0 return v0 .end method- להוסיף את הקלאס (באותו נתיב):
WorkspaceDateReceiver
.class public Lcom/android/launcher3/WorkspaceDateReceiver; .super Landroid/content/BroadcastReceiver; .field private final mWorkspace:Lcom/android/launcher3/Workspace; .method public constructor <init>(Lcom/android/launcher3/Workspace;)V .registers 2 .line 1 invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V .line 2 iput-object p1, p0, Lcom/android/launcher3/WorkspaceDateReceiver;->mWorkspace:Lcom/android/launcher3/Workspace; .line 3 return-void .end method .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V .registers 3 .line 1 iget-object p1, p0, Lcom/android/launcher3/WorkspaceDateReceiver;->mWorkspace:Lcom/android/launcher3/Workspace; if-eqz p1, :cond_end .line 2 invoke-virtual {p1}, Lcom/android/launcher3/Workspace;->refreshTime()V :cond_end return-void .end method- בקלאס Workspace (שנמצא בנתיב כדלעיל):
יחסית בתחילת הקלאס (בערך שורה 46)
אחרי השורה
# static fieldsלהוסיף את השורה הזאת:
.field private mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver;- באותו קלאס
במתודה insertNewWorkspaceScreen (הראשונה, נראית כך):
.method public insertNewWorkspaceScreen(II)Lcom/android/launcher3/CellLayout;מתחת לשורה .line 728 ישנה השורה:
invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setFocusable(Z)Vמיד אחריה להוסיף את השורות:
# הזרקה: 2 שורות ומרכוז invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setSingleLine(Z)V const/4 v7, 0x2 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setMaxLines(I)V const/16 v7, 0x11 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setGravity(I)V
אמור להראות כך:.line 728 invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setFocusable(Z)V # הזרקה: 2 שורות ומרכוז invoke-virtual {v6, v5}, Landroid/widget/TextClock;->setSingleLine(Z)V const/4 v7, 0x2 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setMaxLines(I)V const/16 v7, 0x11 invoke-virtual {v6, v7}, Landroid/widget/TextClock;->setGravity(I)V- באותו קלאס
במתודה refreshTime
א. לשנות את המתודה לpublic
ב. לחפש את השורה הזאת:
invoke-direct/range {p0 .. p0}, Lcom/android/launcher3/Workspace;->refreshTime()Vולהחליף עם זאת:
invoke-virtual/range {p0 .. p0}, Lcom/android/launcher3/Workspace;->refreshTime()Vג. מיד אחרי השורה הזאת (היא נמצאת פעמיים, לבצע על שני השורות שתמצאו):
sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String;להוסיף את הקוד:
invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1
בסוף המתודה אמורה להראות כך:.method public refreshTime()V .registers 4 .line 779 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v0 invoke-static {v0}, Lcom/android/launcher3/Workspace$Patterns;->update(Landroid/content/Context;)V .line 780 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String; # הזרקת התאריך העברי לפורמט 24 שעות invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat24Hour(Ljava/lang/CharSequence;)V .line 781 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->dateView:Ljava/lang/String; # הזרקת התאריך העברי לפורמט 12 שעות invoke-static {v1}, Lcom/android/launcher3/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat12Hour(Ljava/lang/CharSequence;)V .line 783 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mClockView:Landroid/widget/TextClock; .line 784 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getResources()Landroid/content/res/Resources; move-result-object v1 sget v2, Lcom/android/launcher3/R$dimen;->am_pm_widget_font_size:I invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getDimension(I)F move-result v1 float-to-int v1, v1 sget-object v2, Lcom/android/launcher3/Workspace$Patterns;->clockView12:Ljava/lang/String; .line 783 invoke-virtual {p0, v1, v2}, Lcom/android/launcher3/Workspace;->updateAmPmTextSize(ILjava/lang/String;)Ljava/lang/CharSequence; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat12Hour(Ljava/lang/CharSequence;)V .line 785 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mClockView:Landroid/widget/TextClock; sget-object v1, Lcom/android/launcher3/Workspace$Patterns;->clockView24:Ljava/lang/String; invoke-virtual {v0, v1}, Landroid/widget/TextClock;->setFormat24Hour(Ljava/lang/CharSequence;)V .line 788 return-void .end method- במתודה onAttachedToWindow
א. להוסיף רגיסטר אחד (להחליף מ3 ל4).
ב. בסוף המתודה ממש לפני return-void, להוסיף את הקוד:
# הזרקה: רישום המאזין new-instance v0, Lcom/android/launcher3/WorkspaceDateReceiver; invoke-direct {v0, p0}, Lcom/android/launcher3/WorkspaceDateReceiver;-><init>(Lcom/android/launcher3/Workspace;)V iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; new-instance v1, Landroid/content/IntentFilter; invoke-direct {v1}, Landroid/content/IntentFilter;-><init>()V const-string v2, "android.intent.action.TIME_TICK" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIME_SET" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIMEZONE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.DATE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v2 invoke-virtual {v2, v0, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
בסוף המתודה אמורה להראות כך:.method protected onAttachedToWindow()V .registers 4 .line 1490 invoke-super {p0}, Lcom/android/launcher3/PagedView;->onAttachedToWindow()V .line 1491 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mWallpaperOffset:Lcom/android/launcher3/util/WallpaperOffsetInterpolator; invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getWindowToken()Landroid/os/IBinder; move-result-object v1 invoke-virtual {v0, v1}, Lcom/android/launcher3/util/WallpaperOffsetInterpolator;->setWindowToken(Landroid/os/IBinder;)V .line 1492 invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->computeScroll()V # רישום המאזין לאירועי שעון new-instance v0, Lcom/android/launcher3/WorkspaceDateReceiver; invoke-direct {v0, p0}, Lcom/android/launcher3/WorkspaceDateReceiver;-><init>(Lcom/android/launcher3/Workspace;)V iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; new-instance v1, Landroid/content/IntentFilter; invoke-direct {v1}, Landroid/content/IntentFilter;-><init>()V const-string v2, "android.intent.action.TIME_TICK" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIME_SET" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.TIMEZONE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V const-string v2, "android.intent.action.DATE_CHANGED" invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v2 invoke-virtual {v2, v0, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; .line 1493 return-void .end method- במתודה onDetachedFromWindow (נמצאת ממש אחרי המתודה הקודמת)
כמו קודם, בסוף המתודה ממש לפני הreturn-void, להוסיף את הקוד הבא:
# הזרקה: ביטול המאזין iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; if-eqz v0, :cond_unregister_end invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v1 invoke-virtual {v1, v0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V const/4 v0, 0x0 iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; :cond_unregister_end
בסוף המתודה אמורה להראות כך:.method protected onDetachedFromWindow()V .registers 3 .line 1496 invoke-super {p0}, Lcom/android/launcher3/PagedView;->onDetachedFromWindow()V .line 1497 iget-object v0, p0, Lcom/android/launcher3/Workspace;->mWallpaperOffset:Lcom/android/launcher3/util/WallpaperOffsetInterpolator; const/4 v1, 0x0 invoke-virtual {v0, v1}, Lcom/android/launcher3/util/WallpaperOffsetInterpolator;->setWindowToken(Landroid/os/IBinder;)V # מחיקת המאזין כדי למנוע דליפת זיכרון iget-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; if-eqz v0, :cond_unregister_end invoke-virtual {p0}, Lcom/android/launcher3/Workspace;->getContext()Landroid/content/Context; move-result-object v1 invoke-virtual {v1, v0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V const/4 v0, 0x0 iput-object v0, p0, Lcom/android/launcher3/Workspace;->mDateReceiver:Lcom/android/launcher3/WorkspaceDateReceiver; :cond_unregister_end .line 1498 return-void .end methodבהצלחה!
@lilo159 כתב במדריך | הוספת תאריך עברי למסך הבית בגרסה הרגילה של f21 pro:
הוספת תאריך עברי למסך הבית
תודה רבה!!
השתמשתי בזה, וזה מאוד עזר לייש איך לעשות את זה גם במסך נעילה?
