Summary
The Call mode (the quick-schedule feature with options like Now, 10 seconds, 30 seconds, etc.) does not trigger when the phone screen turns off before the call is due to fire. The call simply never happens. No sound, no incoming call screen, nothing.
The Alarm mode works correctly, with a small delay that I understand is unavoidable due to the OS.
Device Information
- Device: Vivo X300 Ultra (Global variant)
- OS: Origin OS 6
- Android version: Android 16
- App version: Latest version from GitHub (v2.5)
What Origin OS 6 is
Origin OS 6 is Vivo's new Android skin (replacing Funtouch OS globally) that shipped on the X300 series out of the box. It is built on Android 16 and has a very aggressive background process management system called "Smart Sleep Optimization." This system suspends or kills background services very quickly after the screen turns off, even for apps that have been given all available permissions by the user.
Steps to Reproduce
- Open FakeCall.
- Go to the Call tab (not Alarm).
- Set up a caller name and number.
- Press the schedule button and choose any delay (e.g. 30 seconds or 5 minutes).
- Press the home button or power button to turn the screen off.
- Wait for the scheduled time to pass.
Result: Nothing happens. The call never fires.
Expected result: The phone rings with a fake incoming call, just like it does when the screen is on.
What I have already tried
I have gone through every available setting on Origin OS 6 to try to keep the app alive in the background. All of the following have been enabled or configured:
- Battery: Background power consumption management set to "High background power usage" for FakeCall
- Battery: Sleep mode disabled
- Autostart: Enabled for FakeCall via Settings and via iManager
- Single permission settings: Autostart, Floating window, Display on lock screen, and Background pop-ups all enabled
- Apps: "Allow running in background" enabled
- FakeCall locked in the Recent Apps screen (pinned so it cannot be swiped away)
- Accessibility Service for FakeCall is enabled
None of these made a difference. The Call mode still silently fails when the screen is off.
Why Alarm mode works but Call mode does not
This is the key observation. The Alarm mode in FakeCall uses Android's AlarmManager with what appears to be an alarm-clock type alarm (setAlarmClock). Android and OEM systems like Origin OS 6 treat alarm-clock alarms as high-priority and exempt them from background restrictions, which is why the Alarm mode fires even through aggressive power management (though with a short delay).
The Call mode, on the other hand, appears to schedule the call using a standard timer or a regular setExact alarm, which is not exempt from Origin OS 6's Smart Sleep Optimization. As soon as the screen turns off, the OS suspends the app's background process and the scheduled call never fires.
In short: Alarm mode survives because it uses a privileged alarm type. Call mode does not survive because it uses a standard one that the OS is allowed to defer or drop entirely.
Suggested Fix
The Call mode scheduler could be changed to use AlarmManager.setAlarmClock() instead of a standard exact alarm or a timer. This is the same alarm type that powers the Alarm mode. It would bring the Call mode's reliability in line with the Alarm mode.
Additionally, adding a WAKE_LOCK (specifically PowerManager.PARTIAL_WAKE_LOCK) when the alarm fires would ensure the CPU stays awake long enough to actually place the fake call through the TelecomManager, even when the screen is off.
Additional Context
This is likely not unique to the Vivo X300 Ultra. Any device running Origin OS 6 or a similarly aggressive OEM power management layer (such as MIUI, ColorOS, or HyperOS) would probably show the same behavior in Call mode. The Alarm mode already proves the fix works, so this is more of a consistency issue than a fundamental limitation.
I am happy to test any builds or provide logcat output if that would help. I can connect the phone via ADB if needed.
Summary
The Call mode (the quick-schedule feature with options like Now, 10 seconds, 30 seconds, etc.) does not trigger when the phone screen turns off before the call is due to fire. The call simply never happens. No sound, no incoming call screen, nothing.
The Alarm mode works correctly, with a small delay that I understand is unavoidable due to the OS.
Device Information
What Origin OS 6 is
Origin OS 6 is Vivo's new Android skin (replacing Funtouch OS globally) that shipped on the X300 series out of the box. It is built on Android 16 and has a very aggressive background process management system called "Smart Sleep Optimization." This system suspends or kills background services very quickly after the screen turns off, even for apps that have been given all available permissions by the user.
Steps to Reproduce
Result: Nothing happens. The call never fires.
Expected result: The phone rings with a fake incoming call, just like it does when the screen is on.
What I have already tried
I have gone through every available setting on Origin OS 6 to try to keep the app alive in the background. All of the following have been enabled or configured:
None of these made a difference. The Call mode still silently fails when the screen is off.
Why Alarm mode works but Call mode does not
This is the key observation. The Alarm mode in FakeCall uses Android's
AlarmManagerwith what appears to be an alarm-clock type alarm (setAlarmClock). Android and OEM systems like Origin OS 6 treat alarm-clock alarms as high-priority and exempt them from background restrictions, which is why the Alarm mode fires even through aggressive power management (though with a short delay).The Call mode, on the other hand, appears to schedule the call using a standard timer or a regular
setExactalarm, which is not exempt from Origin OS 6's Smart Sleep Optimization. As soon as the screen turns off, the OS suspends the app's background process and the scheduled call never fires.In short: Alarm mode survives because it uses a privileged alarm type. Call mode does not survive because it uses a standard one that the OS is allowed to defer or drop entirely.
Suggested Fix
The Call mode scheduler could be changed to use
AlarmManager.setAlarmClock()instead of a standard exact alarm or a timer. This is the same alarm type that powers the Alarm mode. It would bring the Call mode's reliability in line with the Alarm mode.Additionally, adding a
WAKE_LOCK(specificallyPowerManager.PARTIAL_WAKE_LOCK) when the alarm fires would ensure the CPU stays awake long enough to actually place the fake call through the TelecomManager, even when the screen is off.Additional Context
This is likely not unique to the Vivo X300 Ultra. Any device running Origin OS 6 or a similarly aggressive OEM power management layer (such as MIUI, ColorOS, or HyperOS) would probably show the same behavior in Call mode. The Alarm mode already proves the fix works, so this is more of a consistency issue than a fundamental limitation.
I am happy to test any builds or provide logcat output if that would help. I can connect the phone via ADB if needed.