micku7zu / QuickCursor

Quick Cursor: One-Handed mode
https://play.google.com/store/apps/details?id=com.quickcursor
21 stars 1 forks source link

App turns off randomly on Android 14 devices - Feedback needed #22

Open micku7zu opened 1 year ago

micku7zu commented 1 year ago

What's not working?

It seems that the app can't draw anything on the screen (over other apps), so the triggers are not on the edge of the screen and the cursor can't be used. I don't know if the touch simulation would work, because the users can't grab a new cursor to test that.

Temporarly fix

One time fix: Restart the device, but the issue will appear again after some time.


What we know so far?

There are two reports right now that the app doesn't work properly on Android 14 on Pixel devices:

I will centralize the information on this Github issue and try to find the root cause.

Based on the current informations, I suspect that the issue is in the Pixel Android 14 operating system (latest stable version, not beta), not in Quick Cursor:


How can you help?

Please reply if you have this issue and please include:

If you have the issue and know how to use logcat, It would help me if you can capture the logcat during this two operations and send it to me (or attach it here):

Other ways of debugging

I will try to create a simple app that does almost nothing, it will only use an accessibility service like Quick Cursor and it will draw a rectangle on the screen, to see if the issue happens on that app also and I will try to include some useful logs in that app that might help us find the root cause.

I will post it here when it will be ready.

Thanks!

micku7zu commented 1 year ago

Waiting for more feedback, but the issue does not happen on all Pixel Android 14 users, so it might be some edge case that is causing this issue. Android 14 users which don't have any issues

Edit: I talked with 4 more Pixel Android 14 users and they don't have the issue.

If you encounter the issue, do you have any modification to your device? Anything special worth mentioning? Any other accessibility service running?

micku7zu commented 1 year ago

I've released a new beta version 1.25.3 that targets Android 14 and updates dependencies. I don't think it will make a difference but it is worth trying for anyone having the above issue: https://github.com/micku7zu/QuickCursor/releases/tag/203.

Edit: Newer version already available on Play Store: https://github.com/micku7zu/QuickCursor/releases/tag/207

bdmorin commented 10 months ago

I just enabled debug logs. Visual debug isn't doing anything.

I'll post logs when I have something

micku7zu commented 9 months ago

I've got new important feedback from a user having the same issue.

When the app stops working, also the OS Screenshot preview overlay stops working at the same time.

This means that the bug is 100% not inside the app, because system apps are affected by it.

Can someone try this? When the app stops working, can you take a screenshot? Does the screenshot preview overlay works or not? Thanks!

bdmorin commented 8 months ago

I have the same issue. Pixel 7 Pro, fully updated.

Here's the log from restart to fail.

Logs cleared!
07:26:19.137: turnOff(): OFF
07:26:21.130: Try turnOn()
07:26:21.170: serviceState after turnOn(): ON
    07:32:54.275: Already version 208, nothing to do.
07:32:57.231: Service onServiceConnected
07:32:57.232: Quick Cursor accessibility service started.
07:32:57.666: device getMaxBrightness() = 255
07:32:57.691: Already version 208, nothing to do.
07:32:57.694: Keyboard handle: false
07:32:57.770: lockUnlockReceiver registered.
07:32:57.787: Try turnOn()
07:32:58.268: forceChange: false, oldPrimary: -7385600, newPrimary: -7385600
07:37:37.934: turnOff(): PAUSED_LOCKSCREEN
08:14:40.087: Try turnOn()
08:16:47.303: onNewCursorGrab Right
08:17:03.818: debugLogs turned: off
08:17:04.316: debugLogs turned: on
08:17:04.425: Keyboard handle: false
08:17:04.432: Try turnOn()
08:17:05.000: debugVisual turned: off
08:17:05.108: Keyboard handle: false
08:17:05.117: Try turnOn()
08:17:05.544: debugVisual turned: on
08:17:05.651: Keyboard handle: false
08:17:05.670: Try turnOn()
08:22:44.946: turnOff(): PAUSED_LOCKSCREEN
08:23:11.215: Try turnOn()
08:26:26.827: turnOff(): PAUSED_LOCKSCREEN
08:28:29.591: Try turnOn()
08:28:43.294: turnOff(): PAUSED_LOCKSCREEN
08:43:42.149: turnOff(): PAUSED_LOCKSCREEN
09:20:21.183: turnOff(): PAUSED_LOCKSCREEN
09:20:39.620: Try turnOn()
09:26:52.323: turnOff(): PAUSED_LOCKSCREEN
09:30:07.895: Try turnOn()
09:33:45.117: turnOff(): PAUSED_LOCKSCREEN
09:34:24.396: Try turnOn()
09:35:59.689: turnOff(): PAUSED_LOCKSCREEN
09:36:45.004: Try turnOn()
09:41:25.165: turnOff(): PAUSED_LOCKSCREEN
09:41:26.533: Try turnOn()
09:45:12.062: turnOff(): PAUSED_LOCKSCREEN
09:47:14.594: Try turnOn()
09:47:27.938: turnOff(): PAUSED_LOCKSCREEN
09:48:50.893: Try turnOn()
09:49:32.330: turnOff(): PAUSED_LOCKSCREEN
09:49:32.518: Try turnOn()
09:54:21.403: turnOff(): PAUSED_LOCKSCREEN
09:54:21.667: Try turnOn()
09:56:24.950: turnOff(): PAUSED_LOCKSCREEN
09:56:25.170: Try turnOn()
09:56:59.769: turnOff(): PAUSED_LOCKSCREEN
09:56:59.981: Try turnOn()
11:25:06.916: turnOff(): PAUSED_LOCKSCREEN
11:25:14.769: Try turnOn()
14:39:17.060: onNewCursorGrab Left
14:44:10.699: turnOff(): PAUSED_LOCKSCREEN
14:48:49.874: Try turnOn()
14:50:52.602: turnOff(): PAUSED_LOCKSCREEN
15:48:47.023: Try turnOn()
15:48:58.351: onNewCursorGrab Left
16:49:20.585: onNewCursorGrab Right
18:09:49.989: turnOff(): PAUSED_LOCKSCREEN
18:09:50.173: forceChange: false, oldPrimary: -7385600, newPrimary: -18566
18:09:50.174: Light theme: false, primary: ffffb77a accent: ffffdcc2
18:09:50.174: Colors changed.
18:09:50.183: Keyboard handle: false
18:09:50.210: lockUnlockReceiver unregistered.
18:09:50.215: lockUnlockReceiver registered.
18:09:50.215: Try turnOn()
18:09:50.688: forceChange: false, oldPrimary: -18566, newPrimary: -18566
18:11:17.558: Try turnOn()
18:12:41.485: turnOff(): PAUSED_LOCKSCREEN
18:15:24.690: turnOff(): PAUSED_LOCKSCREEN
18:15:30.580: Try turnOn()
18:26:53.848: turnOff(): PAUSED_LOCKSCREEN
18:29:58.969: Try turnOn()
bdmorin commented 8 months ago

I've got new important feedback from a user having the same issue.

When the app stops working, also the OS Screenshot preview overlay stops working at the same time.

This means that the bug is 100% not inside the app, because system apps are affected by it.

Can someone try this? When the app stops working, can you take a screenshot? Does the screenshot preview overlay works or not? Thanks!

Confirmed, my screenshot happens, but the toast interaction doesn't happen.

I'm going to try uninstalling the app, and see if the broken screenshot behavior continues.

micku7zu commented 8 months ago

Thanks for confirmations. If you know how to use ADB, some adb logcats might help me. I say might, because I'm not sure what I will find there, but it could be helpful.

The steps to replicate in logcat:

  1. Turn off Quick Cursor completely (accessibility service)
  2. Clear ADB logcat
  3. Turn on Quick Cursor accessibility service
  4. Do a screenshot
  5. Save the logcat to a file
  6. Send me the logcat

Just be aware that the logcat file might contain personal file if you have apps that wrongly logs data there (it shouldn't contain, but there is nothing stopping devs to log whatever they want, so...). Not an issue if you don't want to risk with that. Thanks!

AwwsmGaurav commented 8 months ago

Okay

micku7zu commented 8 months ago

@AwwsmGaurav sorry, your issue sounds similar but it is completely different than the Pixel issue. You can post it here: https://github.com/micku7zu/QuickCursor/issues/5

bdmorin commented 8 months ago

Thanks for confirmations. If you know how to use ADB, some adb logcats might help me. I say might, because I'm not sure what I will find there, but it could be helpful.

The steps to replicate in logcat:

  1. Turn off Quick Cursor completely (accessibility service)
  2. Clear ADB logcat
  3. Turn on Quick Cursor accessibility service
  4. Do a screenshot
  5. Save the logcat to a file
  6. Send me the logcat

Just be aware that the logcat file might contain personal file if you have apps that wrongly logs data there (it shouldn't contain, but there is nothing stopping devs to log whatever they want, so...). Not an issue if you don't want to risk with that. Thanks!

Learning about logcat now, will report later.

march 2: screenshot functionality is “normal”, typically fails within 1 day. Quickcursor is currently uninstalled.

emallery commented 7 months ago

Hello!

I seem to be having this issue as well -- after a day or so, the edge triggers for Quick Cursor stop responding and the screenshot preview UI breaks as others have described. Interestingly, the edge trigger areas continue to block the back gesture where the triggers would be if they were working. Also, I went a whole day with the "Debug visuals" setting enabled in the Quick Cursor settings, and the overlay visuals stopped appearing at the same time the triggers stopped working.

I can also back up that neither disabling/re-enabling the "Stop app" switch or revoking/returning accessibility privileges fixes the issue.

However! I did just find out that changing my device's screen resolution fixed Quick Cursor and the screenshot overlay! Specifically (in case it's important), changing from "High resolution" to "Full resolution" fixed the issue, and it stayed OK after changing back to "High resolution".

All I can guess is that changing the resolution forces Android to restart whatever accessibility service is breaking down? I have no idea TBH. But it could be nice to investigate this workaround, since it's a little less disruptive than restarting. I'll try it again next time the cursor dies again and report back if it doesn't work.

micku7zu commented 7 months ago

@emallery Thanks for the info!

sibbl commented 7 months ago

Hi all!

I have the issue as well and it regularly happens after I've been navigating with Google Maps.

There seem to be problems with its picture-in-picture mode which it shows on top of the screen when navigating to the home screen or another app via the navigation gestures. Sometimes also my phone is locked, so I first end up there after trying to navigate away from Google Maps.

About the setup: I have a bluetooth device in my car, which triggers Google Maps to open via it's inbuilt Android Auto like feature. To be more specific, my car has no Android Auto, but the UI on the phone switches to have the larger bar on bottom.

I couldn't break it on purpose yet, but I saw that it's broken like 3 out of 4 times after I navigated somewhere in my car and switched to another app meanwhile (which triggers the pip mode).

It still seems very tricky to investigate. as it needs some car setup and probably also some time. Just starting my car to get GMaps auto-launched, starting a navigation, playing around on the device and then stopping the car after one minute doesn't reproduce it.

I also didn't enable debug logs yet, as I just read about it here. Will enable it before my next car trip. I could imagine that ADB log might be even more helpful, but again - this would need some setup and time.

Is Google Maps / Android Auto / any other pip app something you also use and which could be something to continue investigating? I'd be happy for some feedback whether it's worth the effort.

Finally, thanks a lot for the great app, the issue and the very helpful hint about the screen resolution workaround to fix it.

micku7zu commented 7 months ago

I also didn't enable debug logs yet, as I just read about it here. Will enable it before my next car trip. I could imagine that ADB log might be even more helpful, but again - this would need some setup and time.

Unfortunately, debug logs don't provide anything useful in this case. Only ADB logs could provide something useful.

Is Google Maps / Android Auto / any other pip app something you also use and which could be something to continue investigating? I'd be happy for some feedback whether it's worth the effort.

Unfortunately, I don't own a Pixel device and I can't reproduce the issue anywhere else. Only with the help of the community we can find the root cause and report the issue to Google

ggLuigi commented 6 months ago

However! I did just find out that changing my device's screen resolution fixed Quick Cursor and the screenshot overlay! Specifically (in case it's important), changing from "High resolution" to "Full resolution" fixed the issue, and it stayed OK after changing back to "High resolution".

All I can guess is that changing the resolution forces Android to restart whatever accessibility service is breaking down? I have no idea TBH. But it could be nice to investigate this workaround, since it's a little less disruptive than restarting. I'll try it again next time the cursor dies again and report back if it doesn't work.

Sadly, Pixel 8 (not Pro) doesn't provide Screen resolution option in the setting.

The steps to replicate in logcat:

Turn off Quick Cursor completely (accessibility service) Clear ADB logcat Turn on Quick Cursor accessibility service Do a screenshot Save the logcat to a file Send me the logcat

Does the adb logcat process require the quickcursor to be working. Can I still collect the related log if the quickcursor is not working and connect my phone to PC to capture the log?

micku7zu commented 6 months ago

Does the adb logcat process require the quickcursor to be working. Can I still collect the related log if the quickcursor is not working and connect my phone to PC to capture the log?

Anything could be helpful. I don't know exactly what or if I will find something in the ADB logcat. This is the remaining option for us (normal users/developers). More debugging should be done by the Google Pixel team.

So yes, if you can do that, it might help us find something. Thanks!

micku7zu commented 6 months ago

Someone sent me ADB logcats in private.

I didn't find anything specific enough to be sure what the issue is, but there is a questionable log that appears after Quick Cursor tries to draw the triggers on the screen and after the System UI tries to draw the screenshot overlay.

So, what I found so far it is just a guess, it might be nothing or it might be the root cause of the issue. I post here the ideas in order for other developers who search for this log to find it and might be able to find something together.

The logcat error is: Unable to match the desired swap behavior.

OpenGLRenderer          com.android.systemui                 E  Unable to match the desired swap behavior.
OpenGLRenderer          com.quickcursor                      E  Unable to match the desired swap behavior.

I've searched for this log in the Android Source Code and it was added last year.

It is inside the OpenGLRenderer which is the driver that draws things on the screen. The Quick Cursor bug is exactly that, everything works inside the app but the view is not drawn on the screen (and it doesn't crash).

I've tried to search for this log inside my Samsung Android 14 and I couldn't find it. (Quick Cursor works fine on my Samsung Android 14 for many weeks). I don't know if Samsung uses the same SkiaOpenGL driver or not. I don't know if the bug happens somewhere above this line and this is just the outcome.

This might be a coincidence, or it might be a piece from the puzzle. It is blackbox for me and I just make guesses here.

Someone having this issue (@bdmorin, @emallery, @sibbl, @ggLuigi), can you please try to:

Thanks!

bdmorin commented 6 months ago

Hello!

* Pixel 8 Pro

* 14 (March 5, 2024 Security Update)

* AP1A.240305.019.A1

* Niagara Launcher screen locking service

I seem to be having this issue as well -- after a day or so, the edge triggers for Quick Cursor stop responding and the screenshot preview UI breaks as others have described. Interestingly, the edge trigger areas continue to block the back gesture where the triggers would be if they were working. Also, I went a whole day with the "Debug visuals" setting enabled in the Quick Cursor settings, and the overlay visuals stopped appearing at the same time the triggers stopped working.

I can also back up that neither disabling/re-enabling the "Stop app" switch or revoking/returning accessibility privileges fixes the issue.

However! I did just find out that changing my device's screen resolution fixed Quick Cursor and the screenshot overlay! Specifically (in case it's important), changing from "High resolution" to "Full resolution" fixed the issue, and it stayed OK after changing back to "High resolution".

All I can guess is that changing the resolution forces Android to restart whatever accessibility service is breaking down? I have no idea TBH. But it could be nice to investigate this workaround, since it's a little less disruptive than restarting. I'll try it again next time the cursor dies again and report back if it doesn't work.

This solution works for me after I reinstalled quickcursor, app stopped working, screenshots didn't, all I had to do was change resolution and it fixed itself. No reboot needed.

micku7zu commented 6 months ago

New info from someone with OnePlus Android 14. The issue doesn't seem to be Pixel related, but close to stock related.

He managed to find when this issue happens, and he narrowed it down to this two things:

When the theme switches OR when the wallpaper changes with the screen turned off and the material you dynamic colors is enabled, then this issue happens.

Can someone confirm that this options are enabled on their device? Can someone please try to turn off this features and see if the issue still reproduce?

Thanks!

emallery commented 6 months ago

He managed to find when this issue happens, and he narrowed it down to this two things:

* scheduled dark/light theme OR automatic wallpaper change

* Material You dynamic colors

When the theme switches OR when the wallpaper changes with the screen turned off and the material you dynamic colors is enabled, then this issue happens.

Can someone confirm that this options are enabled on their device? Can someone please try to turn off this features and see if the issue still reproduce?

Thanks!

I have a dynamic wallpaper, with dynamic Material You colors and auto light/dark mode. I'll look into changing these settings and report back. I did vaguely notice the cursor stop working "overnight", so this could explain that. Thank you!

EDIT: Looks like both of these things can trigger the issue.

Tested this by setting a plain wallpaper and manually choosing a Material You color, then scheduling auto-dark mode for one minute from now. Both of these scenarios caused QuickCursor/Screenshot Overlay to die:

For Material You changes, I found that choosing any color then immediately locking my device before it finished applying would reliably trigger the bug. I have no issues changing the colors and lock/unlocking while the screen is on as long as I wait for it to finish applying first.

I'm not sure how dynamic wallpapers factor into this, since presumably they only change the colors when the screen is on.

micku7zu commented 6 months ago

@emallery Thanks for confirming!

Ok, so we finally have a way to reproduce the issue and we found what 'random' actually was. The auto theming mechanism in Android 14 is causing issue on 'Draw over other apps' feature of Android OS (not related to Quick Cursor specific, it happens on other apps as well).

So far we know that this happens in close to stock Android versions. Not happening in Samsung because they don't have automatic coloring, the color from wallpaper/theme can be only applied manually (while the screen is on).

Thanks!

Next steps: I will try to simplify and report this to Google as soon as possible. I have to do some work in order to make everything simple and clear and also to post on Reddit. The higher it gets, the more uptoves we will have and the chances that Google will acknowledge and fix the issue will increase.

ggLuigi commented 1 week ago

How should we report it to Google? Please let us know how we can help. Or is there a bug tracker we can keep track on and add information there if needed?

Apart from QuickCursor disabled issue, I think this is also a fundamental cause for another serious issue that screenshot pop up is missing.

Thanks!

theOxifier commented 1 week ago

I've got new important feedback from a user having the same issue.

When the app stops working, also the OS Screenshot preview overlay stops working at the same time.

This means that the bug is 100% not inside the app, because system apps are affected by it.

Can someone try this? When the app stops working, can you take a screenshot? Does the screenshot preview overlay works or not? Thanks!

This seems to be happening to me as well