מדריך | הוספת תאריך עברי למסך הנעילה בדאמבדרויד
-
אם תרצה אני עדיין יכול להוסיף תמונות או לעשות סרטון.
אלוף, ידעתי למה אני מתעקש לראות את הקוד!
זה בדיוק ההבדל בין מדריך שעובד לבין בוטלופ (קריסת מערכת).ראית איזה יופי? ב-MTK אנדרואיד 13 של אלוף תימן, המהנדסים שינו את המבנה בשני מקומות קריטיים:
- ב-
KeyguardSliceProvider: הם הוציאו את פרמוט התאריך למתודה נפרדת בשםgetFormattedDateLocked()! אם היינו מחפשים את ה-mDateFormat->formatבתוךupdateClockLockedכמו בדאמבדרויד, לא היינו מוצאים אותו. - ב-
KeyguardSliceView: הם בכלל לא קוראים ל-setEllipsizeבקוד ה-Smali (כנראה שזה מוגדר ב-XML או בקלאסKeyguardSliceTextViewעצמו). לכן אין לנו שורות להחליף, אלא רק שורות להוסיף.
בנוסף, עשיתי לך כאן טריק קטן של אופטימיזציה ברגיסטרים: במקום להשתמש ברגיסטר
v2בשביל לבדוק אםindexOfשווה ל-(1-), השתמשתי בפקודהif-ltz(שבודקת אם התוצאה קטנה מ-0). למה? כי המתודה מוגדרת עם.registers 3, מה שאומר ש-v2הוא בעצםp0(ה-thisשל הקלאס). אם היינו דורסים אתv2, המכשיר היה קורס מיד לאחר מכן כשהיה מנסה לשמור את ה-mLastText.הנה ההוראות המדויקות לפורטינג עבור הנגן של אלוף תימן:
שלב 1: הזרקת הלוגיקה ב-
KeyguardSliceProviderבנתיב
com/android/systemui/keyguard/KeyguardSliceProvider.smali, חפש את המתודהupdateClockLocked()V.
תמצא שם את השורות הבאות:.line 406 invoke-virtual {p0}, Lcom/android/systemui/keyguard/KeyguardSliceProvider;->getFormattedDateLocked()Ljava/lang/String; move-result-object v0מיד אחריהן (ולפני ה-
iget-object v1), הוסף את הקוד שלנו. השתמשתי ב-v1בתור רגיסטר זמני כי המערכת במילא דורסת אותו שורה אחת למטה. הדבק את זה:# --- הוספת התאריך העברי --- const/16 v1, 0x2c invoke-virtual {v0, v1}, Ljava/lang/String;->indexOf(I)I move-result v1 if-ltz v1, :skip_trim add-int/lit8 v1, v1, 0x2 invoke-virtual {v0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v0 :skip_trim invoke-static {v0}, Lcom/android/systemui/HebrewDateHelper;->getCombinedDateString(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 # --- סוף הוספה ---שלב 2: הגדרת 2 שורות במסך הנעילה ב-
KeyguardSliceViewבנתיב
com/android/keyguard/KeyguardSliceView.smali, חפש את המתודהshowSlice.
תמצא שם את יצירת ה-TextView (סביבות שורה 168):new-instance v9, Lcom/android/keyguard/KeyguardSliceView$KeyguardSliceTextView; iget-object v10, p0, Landroid/widget/LinearLayout;->mContext:Landroid/content/Context; invoke-direct {v9, v10}, Lcom/android/keyguard/KeyguardSliceView$KeyguardSliceTextView;-><init>(Landroid/content/Context;)Vמיד אחרי ה-
<init>(לפני ה-setTextColor), אנחנו נזריק את ההגדרות שלנו למספר שורות. גם כאן השתמשתי ב-v10כי הוא פנוי לחלוטין ברגע הזה. הוסף את השורות הבאות:# --- לאפשר תצוגת 2 שורות לתאריך --- const/4 v10, 0x2 invoke-virtual {v9, v10}, Landroid/widget/TextView;->setMaxLines(I)V const/4 v10, 0x0 invoke-virtual {v9, v10}, Landroid/widget/TextView;->setSingleLine(Z)V # --- סוף הוספה ---שלב 3: הוספת ה-Class
כמובן, את השלב הראשון במדריך שלך – יצירת הקובץ
HebrewDateHelper.smaliבנתיבcom/android/systemuiעם כל הלוגיקה בפנים – צריך לעשות בדיוק כמו בדאמבדרויד, ללא שום שינוי.זהו זה! שמור, קמפל חזרה ותתקין. הקוד עכשיו תפור ברמת הפיקסל ל-MTK 13. תעביר את זה לאלוף תימן, וזה אמור לעבוד לו חלק לגמרי. עבודה מעולה שלך על המדריך המקורי!
@lilo159 אני חושב שזה יספיק כרגע הנגן לא אצלי שאני יבדוק אב מממשש תודה רבה על כל הזמן שהקדשת בשבילי בסופו של יום זה פחות בשבילי זה לפחות ל20 משתמשים בפורום שצורבים את הגירסאות הכשרות שלי אני רוצה שהגירסאות שלי יהיו מושלמות
תודה רבה בשם כל האלה שיצרבו ויהנו - ב-