עזרה | LogicGate - מתזמן משימות מקצועי - דרוש עזרה
-
Disclaimer
האפליקציה נכתבה בעזרת ai
Prologue
היי כולנו מכירים את מקרודרואיד ( MacroDroid ) והאמת שלא יצא לי להתעסק בו הרבה אבל במעט, ראיתי שקשה לבצע בו משימות שהם טיפה מעבר לסטנדרט (לולאות רשימות שמסתנכרנות עם וכו...)
אז חשבתי שבתור פרויקט פסח אני יעבוד על פרויקט שיקל על המלאכה. הפשלתי שרוולים למדתי כמה דברים בדרך והגעתי לפיתוח שהוא רחוק ממושלם אך עובד.
אני מעלה אותו לכאן, תבדקו ותגידו לי האם זה עובד אצלכם והאם שווה לבזבז על זה את שארית הבין הזמנים.
תודה מראש למשתפי הפעולה...Overview
אז ככה, האפליקציה היא בדומה למקרודרואיד רק בצורה יותר תכנותית וכדי להגדיר טריגרים ופעולות יש צורך לתכנת את זה באמצעות ״בלוקים״ (בדומה לקודולר ואחרים עם טיפה שוני, תכף נדבר על זה)
כמו שאמרתי כרגע האפליקציה עם מעט פונקציות אפשריות ואם יהיה ביקוש או שזה יעזור למישהו אני אוסיף עוד.
הממשק פשוט מאוד ומי שיצא לו להתעסק עם קודולר ואחרים מייד יבין איך זה עובד אך בשונה מקודולר - כאן כל מה שאתם מניחים רץ (נניח הנחתם הפעל רטט אז הוא יפעיל ללא צורך בטריגר חוץ מפונקציות שצריך טריגר שידליק תפונקציה.)אדהכי והכי אני לא מצליח לגרום לזה לפעול ברקע כל הזמן (גם אחרי הפעלה מחדש וגם בכיבוי מסך וסגירת האפליקציה) מי שיש לו ידע איך לעזור לי תבוא עליו הברכה.
להורדה
להורדה למנוטפרים
להורדת הפרויקט

-
Disclaimer
האפליקציה נכתבה בעזרת ai
Prologue
היי כולנו מכירים את מקרודרואיד ( MacroDroid ) והאמת שלא יצא לי להתעסק בו הרבה אבל במעט, ראיתי שקשה לבצע בו משימות שהם טיפה מעבר לסטנדרט (לולאות רשימות שמסתנכרנות עם וכו...)
אז חשבתי שבתור פרויקט פסח אני יעבוד על פרויקט שיקל על המלאכה. הפשלתי שרוולים למדתי כמה דברים בדרך והגעתי לפיתוח שהוא רחוק ממושלם אך עובד.
אני מעלה אותו לכאן, תבדקו ותגידו לי האם זה עובד אצלכם והאם שווה לבזבז על זה את שארית הבין הזמנים.
תודה מראש למשתפי הפעולה...Overview
אז ככה, האפליקציה היא בדומה למקרודרואיד רק בצורה יותר תכנותית וכדי להגדיר טריגרים ופעולות יש צורך לתכנת את זה באמצעות ״בלוקים״ (בדומה לקודולר ואחרים עם טיפה שוני, תכף נדבר על זה)
כמו שאמרתי כרגע האפליקציה עם מעט פונקציות אפשריות ואם יהיה ביקוש או שזה יעזור למישהו אני אוסיף עוד.
הממשק פשוט מאוד ומי שיצא לו להתעסק עם קודולר ואחרים מייד יבין איך זה עובד אך בשונה מקודולר - כאן כל מה שאתם מניחים רץ (נניח הנחתם הפעל רטט אז הוא יפעיל ללא צורך בטריגר חוץ מפונקציות שצריך טריגר שידליק תפונקציה.)אדהכי והכי אני לא מצליח לגרום לזה לפעול ברקע כל הזמן (גם אחרי הפעלה מחדש וגם בכיבוי מסך וסגירת האפליקציה) מי שיש לו ידע איך לעזור לי תבוא עליו הברכה.
להורדה
להורדה למנוטפרים
להורדת הפרויקט

@איש-אמת אני מנסה להבין מה עשית כדי שזה יהיה אמור לעבוד ברקע...
נראה שהגדרת חלון צף שקוף. נכון? א"כ צריך לוודא שנתת הרשאה לתצוגה מעל יישומים (זה אמור גם איכשהוא לעזור למסך כבוי כמדומני)
לגבי כשהאפליקציה סגורה ברקע צריך שיהיה מוגדר בלי אופטימיזציה של סוללה
אני עדיין מנסה להבין בדיוק מה מה מעיר אותו אחרי הפעלה מחדש של המכשיראפרופו AI זו חוות דעתו של קלוד
● עכשיו יש לי תמונה מלאה. יש 3 סיבות עיקריות לבעיות, כל אחת קשורה לתרחיש שאחר: --- 1. מסך כבוי - Doze Mode הבעיה: הלב הפועם של הסרוויס הוא ACTION_TIME_TICK (שידור כל דקה). אבל Android לא שולח אותו כאשר המסך כבוי ואין טעינה - זה נקרא Doze mode. הוא פשוט מפסיק להגיע. נמצא בקוד: // ExecutionService.kt:159 Intent.ACTION_TIME_TICK -> scheduleBaseCompiledEval() גם ה-WebView מקפיא ביצוע JavaScript ברקע כברירת מחדל. יש בקוד ניסיון לפתור את זה עם חלון overlay שקוף של 1-4px: // ExecutionService.kt:532-534 private fun shouldHostWebViewInOverlay(): Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && android.provider.Settings.canDrawOverlays(this) אם המשתמש לא אישר SYSTEM_ALERT_WINDOW (הרשאת "הצג על אפליקציות אחרות"), ה-WebView נוצר ללא overlay ו-JavaScript לא רץ כשהאפליקציה ברקע. --- 2. אפליקציה נהרגת ברקע הסרוויס מחזיר START_STICKY - אמור לגרום לאנדרואיד להפעיל אותו מחדש. יש גם EngineHealthWorker שבודק כל 15 דקות. אבל: - בצמצום סוללה: אם המשתמש לא אישר פטור מאופטימיזציית סוללה (REQUEST_IGNORE_BATTERY_OPTIMIZATIONS), הסרוויס ייהרג. ה-MainActivity מציג דיאלוג לכך בכל onResume(), אבל זה רק בקשה — אם לא אישרו, הכל נשבר. - OEMs אגרסיביים (Samsung, Xiaomi, Huawei): יש להם מנגנוני הריגה מעבר ל-AOSP שלא נלקחים בחשבון בקוד. - פרק הזמן עד הכיבוי לחידוש: ה-WorkManager יכול לקחת עד 15 דקות להפעיל מחדש. במהלך הזמן הזה - שקט. --- 3. אחרי הפעלה מחדש ה-BootReceiver מטפל בזה ומוגדר נכון במניפסט, אבל יש בעיה ב-Android 12+: SCHEDULE_EXACT_ALARM הוא הרשאה שדורשת אישור מפורש של המשתמש בהגדרות (לא auto-granted). בלעדיה, על Android 12+ ה-AlarmManager משתמש ב-setAndAllowWhileIdle (לא מדויק) - הטריגרים מבוססי שעה יכולים לאחר בשעות. // TimeTriggerScheduler.kt:107-109 if (am.canScheduleExactAlarms()) { am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAt, pi) } else { am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAt, pi) // לא מדויק } גם אחרי reboot, EngineHealthScheduler.schedule() מופעל מ-LogicGateApplication.onCreate() - אבל WorkManager כבר שומר את המשימה בין reboots, אז זה OK. --- סיכום - מה צריך לבדוק ┌────────────────┬─────────────────────────────────────────────────────────┐ │ בעיה │ מה לבדוק במכשיר │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ מסך כבוי │ האם אישרת "הצג על אפליקציות אחרות" │ │ │ (SYSTEM_ALERT_WINDOW) │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ נהרג ברקע │ האם אישרת פטור מאופטימיזציית סוללה (Doze exemption) │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ Android 12+ │ האם אישרת "Set exact alarms" בהגדרות האפליקציה │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ Samsung/Xiaomi │ הגדרות ייחודיות: "Battery > Never sleeping apps" / │ │ │ "AutoStart" │ └────────────────┴─────────────────────────────────────────────────────────┘ איזה מכשיר וגרסת Android? זה יעזור לצמצם את הבעיה הספציפית אצלך. -
@איש-אמת אני מנסה להבין מה עשית כדי שזה יהיה אמור לעבוד ברקע...
נראה שהגדרת חלון צף שקוף. נכון? א"כ צריך לוודא שנתת הרשאה לתצוגה מעל יישומים (זה אמור גם איכשהוא לעזור למסך כבוי כמדומני)
לגבי כשהאפליקציה סגורה ברקע צריך שיהיה מוגדר בלי אופטימיזציה של סוללה
אני עדיין מנסה להבין בדיוק מה מה מעיר אותו אחרי הפעלה מחדש של המכשיראפרופו AI זו חוות דעתו של קלוד
● עכשיו יש לי תמונה מלאה. יש 3 סיבות עיקריות לבעיות, כל אחת קשורה לתרחיש שאחר: --- 1. מסך כבוי - Doze Mode הבעיה: הלב הפועם של הסרוויס הוא ACTION_TIME_TICK (שידור כל דקה). אבל Android לא שולח אותו כאשר המסך כבוי ואין טעינה - זה נקרא Doze mode. הוא פשוט מפסיק להגיע. נמצא בקוד: // ExecutionService.kt:159 Intent.ACTION_TIME_TICK -> scheduleBaseCompiledEval() גם ה-WebView מקפיא ביצוע JavaScript ברקע כברירת מחדל. יש בקוד ניסיון לפתור את זה עם חלון overlay שקוף של 1-4px: // ExecutionService.kt:532-534 private fun shouldHostWebViewInOverlay(): Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && android.provider.Settings.canDrawOverlays(this) אם המשתמש לא אישר SYSTEM_ALERT_WINDOW (הרשאת "הצג על אפליקציות אחרות"), ה-WebView נוצר ללא overlay ו-JavaScript לא רץ כשהאפליקציה ברקע. --- 2. אפליקציה נהרגת ברקע הסרוויס מחזיר START_STICKY - אמור לגרום לאנדרואיד להפעיל אותו מחדש. יש גם EngineHealthWorker שבודק כל 15 דקות. אבל: - בצמצום סוללה: אם המשתמש לא אישר פטור מאופטימיזציית סוללה (REQUEST_IGNORE_BATTERY_OPTIMIZATIONS), הסרוויס ייהרג. ה-MainActivity מציג דיאלוג לכך בכל onResume(), אבל זה רק בקשה — אם לא אישרו, הכל נשבר. - OEMs אגרסיביים (Samsung, Xiaomi, Huawei): יש להם מנגנוני הריגה מעבר ל-AOSP שלא נלקחים בחשבון בקוד. - פרק הזמן עד הכיבוי לחידוש: ה-WorkManager יכול לקחת עד 15 דקות להפעיל מחדש. במהלך הזמן הזה - שקט. --- 3. אחרי הפעלה מחדש ה-BootReceiver מטפל בזה ומוגדר נכון במניפסט, אבל יש בעיה ב-Android 12+: SCHEDULE_EXACT_ALARM הוא הרשאה שדורשת אישור מפורש של המשתמש בהגדרות (לא auto-granted). בלעדיה, על Android 12+ ה-AlarmManager משתמש ב-setAndAllowWhileIdle (לא מדויק) - הטריגרים מבוססי שעה יכולים לאחר בשעות. // TimeTriggerScheduler.kt:107-109 if (am.canScheduleExactAlarms()) { am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAt, pi) } else { am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAt, pi) // לא מדויק } גם אחרי reboot, EngineHealthScheduler.schedule() מופעל מ-LogicGateApplication.onCreate() - אבל WorkManager כבר שומר את המשימה בין reboots, אז זה OK. --- סיכום - מה צריך לבדוק ┌────────────────┬─────────────────────────────────────────────────────────┐ │ בעיה │ מה לבדוק במכשיר │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ מסך כבוי │ האם אישרת "הצג על אפליקציות אחרות" │ │ │ (SYSTEM_ALERT_WINDOW) │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ נהרג ברקע │ האם אישרת פטור מאופטימיזציית סוללה (Doze exemption) │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ Android 12+ │ האם אישרת "Set exact alarms" בהגדרות האפליקציה │ ├────────────────┼─────────────────────────────────────────────────────────┤ │ Samsung/Xiaomi │ הגדרות ייחודיות: "Battery > Never sleeping apps" / │ │ │ "AutoStart" │ └────────────────┴─────────────────────────────────────────────────────────┘ איזה מכשיר וגרסת Android? זה יעזור לצמצם את הבעיה הספציפית אצלך.@צדיק-0 כתב בעזרה | LogicGate - מתזמן משימות מקצועי - דרוש עזרה:
נראה שהגדרת חלון צף שקוף. נכון? א"כ צריך לוודא שנתת הרשאה לתצוגה מעל יישומים (זה אמור גם איכשהוא לעזור למסך כבוי כמדומני)
לגבי כשהאפליקציה סגורה ברקע צריך שיהיה מוגדר בלי אופטימיזציה של סוללההענקתי לאפליקציה את ההרשאות האלו אבל בכל זאת התהליך נהרג. (אגב החלון צף זה יותר בשביל שהמנוע js לא יסגר)
לגבי ההתעוררות אחרי הפעלה מחדש - יש לי BootReceiver שהוא אמור לדאוג לזה.
לגבי החוות דעת של קלוד הבנתי משם רק בעיה 1 ש ACTION_TIME_TICK לא משדר במסך כבוי, האומנם?! איך מקרודרואיד תופסת פעילויות? -
@צדיק-0 כתב בעזרה | LogicGate - מתזמן משימות מקצועי - דרוש עזרה:
נראה שהגדרת חלון צף שקוף. נכון? א"כ צריך לוודא שנתת הרשאה לתצוגה מעל יישומים (זה אמור גם איכשהוא לעזור למסך כבוי כמדומני)
לגבי כשהאפליקציה סגורה ברקע צריך שיהיה מוגדר בלי אופטימיזציה של סוללההענקתי לאפליקציה את ההרשאות האלו אבל בכל זאת התהליך נהרג. (אגב החלון צף זה יותר בשביל שהמנוע js לא יסגר)
לגבי ההתעוררות אחרי הפעלה מחדש - יש לי BootReceiver שהוא אמור לדאוג לזה.
לגבי החוות דעת של קלוד הבנתי משם רק בעיה 1 ש ACTION_TIME_TICK לא משדר במסך כבוי, האומנם?! איך מקרודרואיד תופסת פעילויות? -
@איש-אמת כתב בעזרה | LogicGate - מתזמן משימות מקצועי - דרוש עזרה:
(אגב החלון צף זה יותר בשביל שהמנוע js לא יסגר)
למה לא להריץ JS ישר בלי להריץ WebView ?
-
@צדיק-0 ה WebView הוא בשביל הבלוקים שיהיה סיוט לעצב אותם ללא שימוש ב WebView אבל בהחלט נראה לי שאפשר אחרי סיום התכנות בבלוקים ליצא את הקוד ולהריץ אותו דרך האפליקציה, אבל לא נראה לי שזה מה שיעזור
@איש-אמת כתב בעזרה | LogicGate - מתזמן משימות מקצועי - דרוש עזרה:
@צדיק-0 ה WebView הוא בשביל הבלוקים שיהיה סיוט לעצב אותם ללא שימוש ב WebView אבל בהחלט נראה לי שאפשר אחרי סיום העיצוב בבלוקים ליצא את הקוד ולהריץ אותו דרך האפליקציה, אבל לא נראה לי שזה מה שיעזור
שומע, הידע שלי בJS מצומצם. ולהריץ על זה AI גם אתה יכול.
אז אני אפנה את מקומי לכאלו שמבינים יותר -
Disclaimer
האפליקציה נכתבה בעזרת ai
Prologue
היי כולנו מכירים את מקרודרואיד ( MacroDroid ) והאמת שלא יצא לי להתעסק בו הרבה אבל במעט, ראיתי שקשה לבצע בו משימות שהם טיפה מעבר לסטנדרט (לולאות רשימות שמסתנכרנות עם וכו...)
אז חשבתי שבתור פרויקט פסח אני יעבוד על פרויקט שיקל על המלאכה. הפשלתי שרוולים למדתי כמה דברים בדרך והגעתי לפיתוח שהוא רחוק ממושלם אך עובד.
אני מעלה אותו לכאן, תבדקו ותגידו לי האם זה עובד אצלכם והאם שווה לבזבז על זה את שארית הבין הזמנים.
תודה מראש למשתפי הפעולה...Overview
אז ככה, האפליקציה היא בדומה למקרודרואיד רק בצורה יותר תכנותית וכדי להגדיר טריגרים ופעולות יש צורך לתכנת את זה באמצעות ״בלוקים״ (בדומה לקודולר ואחרים עם טיפה שוני, תכף נדבר על זה)
כמו שאמרתי כרגע האפליקציה עם מעט פונקציות אפשריות ואם יהיה ביקוש או שזה יעזור למישהו אני אוסיף עוד.
הממשק פשוט מאוד ומי שיצא לו להתעסק עם קודולר ואחרים מייד יבין איך זה עובד אך בשונה מקודולר - כאן כל מה שאתם מניחים רץ (נניח הנחתם הפעל רטט אז הוא יפעיל ללא צורך בטריגר חוץ מפונקציות שצריך טריגר שידליק תפונקציה.)אדהכי והכי אני לא מצליח לגרום לזה לפעול ברקע כל הזמן (גם אחרי הפעלה מחדש וגם בכיבוי מסך וסגירת האפליקציה) מי שיש לו ידע איך לעזור לי תבוא עליו הברכה.
להורדה
להורדה למנוטפרים
להורדת הפרויקט

-
@SHIMI-0 כן, זה ללא רשת בכלל, הוא כנראה כן ידרוש הרשאות בשביל לנהל את הבלוקים הקשורים לרשת למשתמשים החפצים, אבל הוא לא שולח או לוקח מידע מהרשת כלל