דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. אנדרואיד - כללי
  3. שיאומי
  4. שיאומי f21 pro ו +f21 pro
  5. עזרה הדדית - שיאומי f21 pro ו +f21 pro
  6. מדריך | הוספת תאריך עברי למסך הבית בדאמבדרויד

מדריך | הוספת תאריך עברי למסך הבית בדאמבדרויד

מתוזמן נעוץ נעול הועבר עזרה הדדית - שיאומי f21 pro ו +f21 pro
1 פוסטים 1 כותבים 37 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • L מנותק
    L מנותק
    lilo159
    כתב נערך לאחרונה על ידי
    #1

    בהמשך למדריך | הוספת תאריך עברי למסך הנעילה בדאמבדרויד.
    c4589d36-7fcf-4307-9a0b-f586ae9edb19-image.png
    למעשה את התוצאה נראה במסך הבית, אבל לא אותו אנחנו עורכים, אלא את הווידג'ט של השעון. (נפק"מ, שלכאורה הווידג'ט יהיה שונה גם בלאונצ'ר אחר).

    כמובן שנערך באמצעות AI וכו'.

    באפליקציית deskclock
    שנמצאת כאן:
    system/product/app/DeskClock/DeskClock.apk

    1. להוסיף את הקלאס HebrewDateHelper.smali בנתיב:
      com/android/deskclock
    .class public Lcom/android/deskclock/HebrewDateHelper;
    .super Ljava/lang/Object;
    
    # direct methods
    .method public static getCombinedDateString(Ljava/lang/String;)Ljava/lang/String;
        .registers 12
    
        # --- חיתוך היום בשבוע (עד הפסיק) מהתאריך הלועזי ---
        const/16 v0, 0x2c
        invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I
        move-result v0
        const/4 v1, -0x1
        if-eq v0, v1, :skip_trim
        
        add-int/lit8 v0, v0, 0x2
        invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
        move-result-object p0
        
        :skip_trim
        # ----------------------------------------------------
    
        :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, 0x0
        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/deskclock/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
    
    .method public static getNextUpdate(Ljava/util/Date;)Ljava/util/Date;
        .registers 14
    
        if-nez p0, :cond_not_null
        const/4 v0, 0x0
        return-object v0
    
        :cond_not_null
        invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
        move-result-wide v0
    
        invoke-virtual {p0}, Ljava/util/Date;->getTime()J
        move-result-wide v2
    
        invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar;
        move-result-object v4
    
        invoke-virtual {v4, v0, v1}, Ljava/util/Calendar;->setTimeInMillis(J)V
    
        const/4 v5, 0x6
        invoke-virtual {v4, v5}, Ljava/util/Calendar;->get(I)I
        move-result v6
    
        invoke-virtual {v4}, Ljava/util/Calendar;->clone()Ljava/lang/Object;
        move-result-object v7
        check-cast v7, Ljava/util/Calendar;
    
        invoke-virtual {v7, v5, v6}, Ljava/util/Calendar;->set(II)V
    
        invoke-virtual {v7}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone;
        move-result-object v5
        invoke-virtual {v7}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
        move-result-object v8
        invoke-virtual {v5, v8}, Ljava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z
        move-result v5
    
        const-wide v8, 0x400921fb54442d18L
        const-wide/high16 v10, 0x4000000000000000L
        mul-double/2addr v8, v10
        add-int/lit8 v6, v6, -0x50
        int-to-double v10, v6
        mul-double/2addr v8, v10
        const-wide v10, 0x4076d00000000000L
        div-double/2addr v8, v10
        invoke-static {v8, v9}, Ljava/lang/Math;->sin(D)D
        move-result-wide v8
        const-wide v10, 0x3ff0cccccccccccdL
        mul-double/2addr v8, v10
        const-wide v10, 0x403247ae147ae148L
        add-double/2addr v8, v10
    
        if-eqz v5, :skip_dst
        const-wide/high16 v10, 0x3ff0000000000000L
        add-double/2addr v8, v10
    
        :skip_dst
        double-to-int v5, v8
        int-to-double v10, v5
        sub-double/2addr v8, v10
        const-wide v10, 0x404e000000000000L
        mul-double/2addr v8, v10
        double-to-int v6, v8
    
        const/16 v8, 0xb
        invoke-virtual {v7, v8, v5}, Ljava/util/Calendar;->set(II)V
        const/16 v5, 0xc
        invoke-virtual {v7, v5, v6}, Ljava/util/Calendar;->set(II)V
        const/16 v5, 0xd
        const/4 v6, 0x0
        invoke-virtual {v7, v5, v6}, Ljava/util/Calendar;->set(II)V
        const/16 v5, 0xe
        invoke-virtual {v7, v5, v6}, Ljava/util/Calendar;->set(II)V
    
        invoke-virtual {v7}, Ljava/util/Calendar;->getTimeInMillis()J
        move-result-wide v5
    
        const-wide/16 v8, 0x1388
        add-long/2addr v8, v0
        cmp-long v7, v5, v8
        if-lez v7, :skip_set
    
        cmp-long v7, v5, v2
        if-gez v7, :skip_set
    
        move-wide v2, v5
    
        :skip_set
        new-instance v0, Ljava/util/Date;
        invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V
        return-object v0
    .end method
    
    1. בקלאס DigitalAppWidgetProvider
      שנמצא בנתיב com/android/alarmclock
      א. להחליף את כל המתודה clinit, או להוסיף/ לשנות ע"פ הקוד המצורף:
    .method static constructor <clinit>()V
        .registers 4 #להחליף ל4
    
        .line 101
        new-instance v0, Lcom/android/deskclock/LogUtils$Logger;
    
        const-string v1, "DigitalWidgetProvider"
    
        invoke-direct {v0, v1}, Lcom/android/deskclock/LogUtils$Logger;-><init>(Ljava/lang/String;)V
    
        sput-object v0, Lcom/android/alarmclock/DigitalAppWidgetProvider;->LOGGER:Lcom/android/deskclock/LogUtils$Logger;
    
        .line 113
        new-instance v0, Landroid/content/Intent;
    
        const-string v1, "com.android.deskclock.ON_DAY_CHANGE"
    
        invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
        #להוסיף מכאן
        new-instance v1, Landroid/content/ComponentName;
    
        const-string v2, "com.android.deskclock"
    
        const-string v3, "com.android.alarmclock.DigitalAppWidgetProvider"
    
        invoke-direct {v1, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
    
        invoke-virtual {v0, v1}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
        #עד כאן
        sput-object v0, Lcom/android/alarmclock/DigitalAppWidgetProvider;->DAY_CHANGE_INTENT:Landroid/content/Intent;
    
        return-void
    .end method
    

    ב. במתודה updateDayChangeCallback
    בערך בשורה .line 387
    להוסיף כך:

        .line 387
        invoke-interface {v1}, Ljava/util/List;->isEmpty()Z
    
        move-result v3
    
        const/4 v3, 0x0    #  להוסיף את השורה הזאת
    
        if-eqz v3, :cond_18
    

    ב. במתודה getDateFormat
    כמעט בסופה, להוסיף את השורות הבאות:

    .line 500
            invoke-static {v0, p0}, Landroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;
        
            move-result-object p0
            # להוסיף מכאן
            invoke-static {p0}, Lcom/android/deskclock/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String;
        
            move-result-object p0
            # עד כאן
            return-object p0
        .end method
    
    1. בקלאס Utils
      שנמצא באותו נתיב (com/android/deskclock)
      במתודה getNextDay
      כמעט בסופה, להוסיף את השורות הבאות:
    invoke-virtual {v1}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
    
        move-result-object v0
    
        :goto_44
        # להוסיף מכאן
        invoke-static {v0}, Lcom/android/deskclock/HebrewDateHelper;->getNextUpdate(Ljava/util/Date;)Ljava/util/Date;
        
        move-result-object v0
        # עד כאן
        return-object v0
    
    1. ועכשיו לעריכת XML, למרות שמשום מה אני לא אוהב את זה..
      בנתיב /res/layout/
      בקובץ digital_widget.xml
      להוסיף/לשנות את השורות הבאות, או פשוט להחליף את התוכן עם הקוד הבא:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:gravity="0x00000011"
        android:orientation="1"
        android:id="@01020000"
        android:background="@7F08010A"
        android:padding="@7F0702BA"
        android:layout_width="-1"
        android:layout_height="-1"
        android:backgroundTint="?7F04003C">
        
        <TextClock
            android:textAppearance="?7F040042"
            android:ellipsize="0"
            android:layout_gravity="0x00000001"
            android:id="@7F0A009C"
            android:layout_width="-2"
            android:layout_height="-2"
            android:singleLine="true"
            android:includeFontPadding="false"
            android:format12Hour="@7F130210"
            android:format24Hour="@7F130211"/>
            
        <LinearLayout
            android:gravity="0x00000001"           <--- הוספה: מרכוז הפריטים בתוך הקונטיינר
            android:orientation="1"               <--- הוספה: הגדרת כיוון אנכי (אחד מתחת לשני)
            android:id="@7F0A0074"
            android:layout_width="-2"
            android:layout_height="-2"
            android:layout_marginTop="-10.0dip">
            
            <TextClock
                android:textAppearance="?7F040043"
                android:ellipsize="0"
                android:gravity="0x00000011"       <--- הוספה: יישור הטקסט למרכז
                android:layout_gravity="0x00000011" <--- הוספה: מיקום השעון במרכז
                android:id="@7F0A00B8"
                android:layout_width="-2"
                android:layout_height="-2"
                android:maxLines="2"               <--- הוספה: מאפשר לשעון לגלוש ל-2 שורות
                android:singleLine="false"         <--- שינוי: במקור היה true, שונה ל-false
                android:includeFontPadding="false"/>
                
            <LinearLayout                          <--- הוספה: תחילת קונטיינר חדש לתמונה והטקסט
                android:gravity="0x00000001"       <--- הוספה: יישור למרכז האופקי
                android:layout_gravity="0x00000001" <--- הוספה: מיקום הקונטיינר במרכז
                android:orientation="0"            <--- הוספה: כיוון אופקי (תמונה וטקסט באותה שורה)
                android:layout_width="-2"          <--- הוספה: רוחב לפי התוכן
                android:layout_height="-2"         <--- הוספה: גובה לפי התוכן
                android:layout_marginTop="2.0dip"> <--- הוספה: מרווח קטן מלמעלה (מהשעון)
                
                <ImageView
                    android:layout_gravity="0x00000011"
                    android:id="@7F0A019C"
                    android:layout_width="-2"
                    android:layout_height="-2"
                    android:src="@7F08007D"
                    android:scaleType="3"
                    android:adjustViewBounds="true"
                    android:tint="?7F040041"
                    app:tint="?7F040041"
                    android:contentDescription="@00000000"/>
                    
                <TextView
                    android:textAppearance="?7F040043"
                    android:ellipsize="0"
                    android:layout_gravity="0x00000011"
                    android:id="@7F0A019B"
                    android:layout_width="-2"
                    android:layout_height="-2"
                    android:singleLine="true"
                    android:includeFontPadding="false"/>
                    
            </LinearLayout>                        <--- הוספה: סגירת הקונטיינר החדש של התמונה והטקסט
            
        </LinearLayout>
        
        <ListView
            android:layout_gravity="0x00000031"
            android:id="@7F0A029D"
            android:visibility="2"
            android:layout_width="-1"
            android:layout_height="-2"
            android:layout_marginTop="10.0dip"
            android:divider="@00000000"/>
            
    </LinearLayout>
    

    בהצלחה!

    תגובה 1 תגובה אחרונה
    5
    • L lilo159 התייחס לנושא זה

    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • חוקי הפורום
    • פופולרי
    • לא נפתר
    • משתמשים
    • חיפוש גוגל בפורום
    • צור קשר