JakeWharton/Telecine

Update for O

Opened this issue · 16 comments

Now that O is out, a little birdy told me a few weeks ago Telecine is broken. This is presumably due to the overlay changes and I think we just need a new flag on O to make it work again.

Isn't this going to cause problems?

An app's alert windows always appear under critical system windows, such as the status bar and IMEs.

So, any updates?

As far as I understand, here are the issues and some solutions:

  • A permanent notification will be added to the notification shade. Since its priority is low, it won't appear as an icon in the notification bar.

    Can't do anything about that one I suppose
    notification_bar

  • TYPE_SYSTEM_ERROR must be replaced by TYPE_APPLICATION_OVERLAY, but it messes with the sizes in onApplyWindowInsets. The method is called first with a good value, then re-called with 0 as systemWindowInsetTop.

    Using only values greater than 0 fixes this issue

  • The TYPE_APPLICATION_OVERLAY Window now lives under the system Windows and recording actions will appear under the clock.

    One solution could be to expand the overlay area (double the status bar size) for the initial overlay, but keep the original size for the stop button (to prevent missclick when touching the Toolbar overflow menu icon for instance)
    screenshot

FYI: I can create pull requests if needed.

@SimonMarquis

but keep the original size for the stop button

This means that stop button will be underneath the status bar and any attempts to stop recording by clicking the clock area will be intercepted by status bar. Right?

I don't think the status bar intercept any touch event.
It should work like it previously did.

From what I've seen on Android O, the status bar intercepts the touch events regardless of whether targeting 25 or 26. This also happens if the overlay is drawn above the status bar (which is possible when targeting 25 or 26, though might require FLAG_LAYOUT_IN_SCREEN or some other flag).

In short, you can have an overlay in the status bar area but it won't be clickable on Android O devices.

As @marcardar pointed out (and tested myself), touch events are intercepted in this status bar area.
The solution then is to replicate the start/cancel button layout which is 200% height of the regular size.
(see screenshot above)

Or perhaps just shift it down (Android O and later) by the status bar height?

Only AccessibilityServices, using their own instance of WindowManager and the flag accessibility overlay can be displayed over SystemUI (statusbar, lockscreen) on Android O. You can try the behavior using Voice Access, which continues to work properly on Android O because it has an accessibility service

Telecine not working on O is a real bummer - I often send bugs to my team (Airbnb) and my friends in other companies using Telecine @JakeWharton -
any progress on this #165? Happy to lend a hand if there's a decision on how to handle this

@JakeWharton any objection to me forking this - applying the patch and releasing under a new app name? I'm hit by the lack of O support every few days right now.

Still stuck on this one

Given it's been a year now: I forked, implemented the fix, added power button functionality, and published to Play.

https://play.google.com/store/apps/details?id=net.nickreynolds.screenrecorder

Happy to take feedback, feature requests, and to unpublish if Telecine is updated.

Source here: https://github.com/thenickreynolds/Telecine

I've enabled Issues on that branch so feel free to file bugs/requests.

@thenickreynolds thank you for this. So the only way to stop recording is to turn off the screen ?

If you've got questions or requests for the version I published please file issues here: https://github.com/thenickreynolds/Telecine/issues

I've replied to you Google Play review, the traditional way to stop is to tap the same location on the screen where the record button was, I'll add an option to the notification which stops recording also.