שיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה
-
@מים-אחרונים אינני מבין בתכנות, אבל זה עושה לי את השגיאה הבאה:
-
אין לי מושג, אצלי זה עובד וגם אצל אחרים.
פשוט לנסות, אפשר גם לשחק עם הקוד.
@חנוך-הכהן -
פוסט זה נמחק!
-
@לאצי כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
אחרי שראיתי את התמונה הזאת:
חשבתי כזה לעצמי - למה באמת לא לעשות מזה משהו אמיתי שעל יד אחוזי הסוללה יראו כזה אימוג'י חמוד...
נשמע לכם? מי לוקח על עצמו את הפרויקט לאנדרואיד/ווינדוס? (ניתן לקחת גם רק אחד מהם... אני מרשה...)
לאנדרואיד זה מסובך יותר
אתה רוצה שזה יופיע בשורה למעלה או סתם ווידג׳ט? -
@מתושלח-הבבלי בשורה למעלה אפשרי?
-
@מתושלח-הבבלי כמובן שעדיף בשורה למעלה. אם זה לא אפשרי אז ניתן אולי לשים את זה בווילון ובנוסף לשים אפשרות לווידגט.
ובכל אופן מה שיש יהיה טוב.. -
@מתושלח-הבבלי אם אתה או מישהו אחר יודע לבנות אפליקציות לאנדרואיד - אז הנה משהו שAI נתן לי, אולי אפשר לעבוד עם זה
הנה קוד לאנדרואיד (Kotlin) שמציג את האימוג'י המתאים לאחוז הסוללה:import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView class MainActivity : AppCompatActivity() { private lateinit var batteryStatus: TextView private val batteryReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val level = intent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1 val scale = intent?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1 val batteryPct = (level * 100 / scale.toFloat()).toInt() val emoji = getBatteryEmoji(batteryPct) batteryStatus.text = "$batteryPct% $emoji" } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) batteryStatus = findViewById(R.id.batteryStatus) } override fun onResume() { super.onResume() registerReceiver(batteryReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) } override fun onPause() { super.onPause() unregisterReceiver(batteryReceiver) } private fun getBatteryEmoji(percentage: Int): String { return when { percentage >= 90 -> "🤗" percentage >= 80 -> "😄" percentage >= 70 -> "😊" percentage >= 60 -> "😌" percentage >= 50 -> "🙂" percentage >= 40 -> "😑" percentage >= 30 -> "😐" percentage >= 20 -> "😞" percentage >= 10 -> "😒" else -> "😖" } } }
כדי להשתמש בקוד, צריך:
- להוסיף ל-layout (בקובץ
activity_main.xml
) TextView עם idbatteryStatus
:
<TextView android:id="@+id/batteryStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:layout_centerInParent="true"/>
- להוסיף הרשאות ב-AndroidManifest.xml:
<uses-permission android:name="android.permission.BATTERY_STATS"/>
הקוד עושה:
- שימוש ב-BroadcastReceiver כדי לעקוב אחר שינויים במצב הסוללה
- מחשב את אחוז הסוללה הנוכחי
- מציג את האחוז יחד עם האימוג'י המתאים לפי הטווחים שקבעת
- מעדכן אוטומטית את התצוגה בכל שינוי במצב הסוללה
האימוג'ים יוצגו עם עדכון מיידי בכל שינוי של אחוז הסוללה, והתצוגה תתחזק אוטומטית גם כשמטעינים את המכשיר או מנתקים מטען.
אם יש כאן מישהו שיודע לבנות אפליקציות לאנדרואיד - אשמח שיעשה את זה
- להוסיף ל-layout (בקובץ
-
@לאצי כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
@חנוך-הכהן אלו הם המובילים בקטגוריית מדריכים - בניית ופיתוח אפליקציות
@זונדל @איש-אמת אולי אתם תוכלו לסייע כאן בעניין (או שתפנו לאיש הנכון..)נו, באמת...
לפחות @צדיק-תמים @מישהו12 -
@חנוך-הכהן כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
@מתושלח-הבבלי אם אתה או מישהו אחר יודע לבנות אפליקציות לאנדרואיד - אז הנה משהו שAI נתן לי, אולי אפשר לעבוד עם זה
הנה קוד לאנדרואיד (Kotlin) שמציג את האימוג'י המתאים לאחוז הסוללה:import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView class MainActivity : AppCompatActivity() { private lateinit var batteryStatus: TextView private val batteryReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val level = intent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1 val scale = intent?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1 val batteryPct = (level * 100 / scale.toFloat()).toInt() val emoji = getBatteryEmoji(batteryPct) batteryStatus.text = "$batteryPct% $emoji" } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) batteryStatus = findViewById(R.id.batteryStatus) } override fun onResume() { super.onResume() registerReceiver(batteryReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) } override fun onPause() { super.onPause() unregisterReceiver(batteryReceiver) } private fun getBatteryEmoji(percentage: Int): String { return when { percentage >= 90 -> "🤗" percentage >= 80 -> "😄" percentage >= 70 -> "😊" percentage >= 60 -> "😌" percentage >= 50 -> "🙂" percentage >= 40 -> "😑" percentage >= 30 -> "😐" percentage >= 20 -> "😞" percentage >= 10 -> "😒" else -> "😖" } } }
כדי להשתמש בקוד, צריך:
- להוסיף ל-layout (בקובץ
activity_main.xml
) TextView עם idbatteryStatus
:
<TextView android:id="@+id/batteryStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:layout_centerInParent="true"/>
- להוסיף הרשאות ב-AndroidManifest.xml:
<uses-permission android:name="android.permission.BATTERY_STATS"/>
הקוד עושה:
- שימוש ב-BroadcastReceiver כדי לעקוב אחר שינויים במצב הסוללה
- מחשב את אחוז הסוללה הנוכחי
- מציג את האחוז יחד עם האימוג'י המתאים לפי הטווחים שקבעת
- מעדכן אוטומטית את התצוגה בכל שינוי במצב הסוללה
האימוג'ים יוצגו עם עדכון מיידי בכל שינוי של אחוז הסוללה, והתצוגה תתחזק אוטומטית גם כשמטעינים את המכשיר או מנתקים מטען.
אם יש כאן מישהו שיודע לבנות אפליקציות לאנדרואיד - אשמח שיעשה את זה
הקוד הזה, בהנחה שהוא בכלל יעבוד, לא רלוונטי באמת. רק אם תכנס לאפליקציה זה יוצג לך במסך שלה. לא בסטטוס בר.
לעניינו;
אני עסוק מידי, וזה חתיכת פרוייקט, כרגע אין לי זמן לזה (בטח שאני לא מבין למה זה יעיל, ולא סתם גימיק חמוד). אבל בהצלחה למי שיעשה את זה - להוסיף ל-layout (בקובץ
-
@מישהו12 כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
אני עסוק מידי, וזה חתיכת פרוייקט
אל תגזים
כמה זמן לוקח לבנות קוד פשוט שמציג ווידג׳ט במסך הבית עם אימוג׳י וסוללה -
@מתושלח-הבבלי כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
@מישהו12 כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
אני עסוק מידי, וזה חתיכת פרוייקט
אל תגזים
כמה זמן לוקח לבנות קוד פשוט שמציג ווידג׳ט במסך הבית עם אימוג׳י וסוללהאני לא יודע כמה ניסיון יש לך בתכנות עם AI.
אבל אפליקציה כזו תיקח שעות, והרבה, אלא אם כן יש לך מזל והAI החליט להיות יעיל (זה קורה לו לפעמים) -
@מישהו12 זה שווה משהו?
שינוי הסטטוס בר המקורי של אנדרואיד (הוספת אימוג'י ליד אייקון הסוללה) דורש שינוי קוד מערכת (SystemUI) – פעולה מורכבת שדורשת הרשאות root וגישה לקובצי המערכת. זה אפשרי, אך דורש עבודה עם קבצי APK ממודרים והתאמה ספציפית לגרסת האנדרואיד ולמכשיר שלך. הנה הדרך הכללית:
שלב 1: גישה לקובצי המערכת
- התקן אפליקציה כמו Solid Explorer או Root Explorer עם גישת root.
- עבור לתיקיית המערכת:
/system/priv-app/SystemUI/
- העתק את הקובץ
SystemUI.apk
(אוSystemUI.zip
) למחשב שלך לגיבוי.
שלב 2: מניפולציה ב-SystemUI.apk
-
פרק את הקובץ
SystemUI.apk
באמצעות כלי כמו APKTool:apktool d SystemUI.apk
-
חפש את קובץ ה-layout שאחראי על הסטטוס בר.
- קובץ אפשרי:
res/layout/system_icons.xml
אוbattery_meter_view.xml
. - בחלק מהמכשירים זה נמצא ב-
res/layout/status_bar.xml
.
- קובץ אפשרי:
-
הוסף TextView לאימוג'י ליד אייקון הסוללה. לדוגמה:
<TextView android:id="@+id/battery_emoji" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:layout_toEndOf="@id/battery_percent" />
שלב 3: עדכון קוד ה-Java/קפלינג
- חפש את הקובץ ב-Java/Kotlin שאחראי על עדכון הסוללה (לדוגמה:
BatteryMeterView.java
). - הוסף לוגיקה שמעדכנת את ה-TextView עם האימוג'י לפי האחוז. לדוגמה:
TextView batteryEmoji = findViewById(R.id.battery_emoji); int percentage = calculateBatteryPercentage(); String emoji = getEmojiForPercentage(percentage); batteryEmoji.setText(emoji);
שלב 4: הרכבה וחתימה מחדש
- בנה מחדש את ה-APK עם APKTool:
apktool b SystemUI -o NewSystemUI.apk
- חתום מחדש על ה-APK עם כלי כמו
ZipSigner
אוapksigner
.
שלב 5: החלפת הקובץ במכשיר
- העלה את
NewSystemUI.apk
חזרה לתיקייה/system/priv-app/SystemUI/
. - שנה הרשאות לקובץ ל-
644
(rw-r--r--). - אתחל את המכשיר.
אזהרות קריטיות:
- גיבוי: אם ה-
SystemUI.apk
פגום, המכשיר עלול להיכנס ללולאת אתחול (bootloop). דאג לגיבוי מלא. - התאמה למכשיר: קוד ה-SystemUI שונה בין יצרנים וגרסאות אנדרואיד. ייתכן שתצטרך להתאים את הקוד ספציפית למכשירך.
- Magisk Modules: מומלץ להשתמש במודול Magisk כמו SystemUI Tuner כדי לבצע שינויים בצורה "נקייה" יותר (systemless).
אופציה פשוטה יותר (למשתמשי Magisk):
אם המכשיר שלך מורדם עם Magisk, תוכל להשתמש במודולים קיימים שמאפשרים התאמה של הסטטוס בר מבלי לפרק את ה-APK:
- התקן את המודול SystemUI Tuner.
- השתמש באפשרויות המודול כדי להוסיף טקסט מותאם אישית (כולל אימוג'ים) ליד אייקון הסוללה.
דוגמה למודול Magisk מותאם אישית:
אם אתה יוצר מודול Magisk משלך, תוכל לכתוב סקריפט שמחליף את קובץ ה-XML של הסטטוס בר בגרסה המותאמת שלך. מדריך ליצירת מודולי Magisk.
הערה אחרונה:
זהו תהליך מתקדם, וללא ניסיון בקוד אנדרואיד או מודולים, ייתכן שיהיה קשה לבצע אותו. אם אתה מעוניין בפתרון "מוכן לשימוש", חפש מודולים קיימים בפורומים כמו XDA Developers.
-
@חנוך-הכהן כתב בשיתוף | הצעה לאפליקציה/תוכנה חמודה להצגת אחוזי הסוללה:
@מישהו12 זה שווה משהו?
מרפרוף מלמעלה בלבד:
לגבי עריכת הSystemUI - לא.לגבי ההצעה להשתמש במודול מגיסק SystemUI Tuner - נראה הגיוני אבל אני לא מכיר את המודל הזה.