CollaboraOnline / online

Collabora Online is a collaborative online office suite based on LibreOffice technology. This is also the source for the Collabora Office apps for iOS and Android.
https://collaboraonline.com
Other
1.79k stars 682 forks source link

Android app exits to initial screen when connecting to Bluetooth keyboard to Samsung tablet #7306

Open bjorn3 opened 12 months ago

bjorn3 commented 12 months ago

Describe the Bug

A clear and concise description of what the bug is.

Steps to Reproduce

  1. Open document
  2. Click button to edit document
  3. Connect to bluetooth keyboard
  4. Wait about 2s.

Or alternatively:

  1. Connect to bluetooth keyboard
  2. Open Document
  3. Click button to edit document
  4. Wait about 2-10s.

Expected Behavior

The keyboard can be used to edit text.

Actual Behavior

You get thrown back to the initial screen where you can select a document to open. It does still save it.

Screenshots

If applicable, add screenshots to help explain your problem.

Tablet

Additional Context

This problem occured when the Bluetooth keyboard had low battery charge causing connection to drop frequently. Now that it is charged a bit more the problem no longer occurs.

https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/services/core/java/com/android/server/wm/ActivityRecord.java;l=6536?q=APP_FREEZE_TIMEOUT seems to be related. It would at least explain why it happens after 2s rather than immediately.

Some log excerpts ``` 09-26 11:48:08.093 1379 1642 D BluetoothController: updateConnected = 2mConnectionState = 2 09-26 11:48:08.093 11738 11738 D InsetsController: onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1920, 1200), mDisplayCutout=DisplayCutout{insets=Rect(0, 0 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=0 displayHeight=0 physicalDisplayWidth=0 physicalDisplayHeight=0 density={0.0} cutoutSpec={} rotation={0} scale={0.0} physicalPixelDisplaySizeRatio={0.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=20, center=Point(20, 20)}, RoundedCorner{position=TopRight, radius=20, center=Point(1900, 20)}, RoundedCorner{position=BottomRight, radius=20, center=Point(1900, 1180)}, RoundedCorner{position=BottomLeft, radius=20, center=Point(20, 1180)}]} mRoundedCornerFrame=Rect(0, 0 - 1920, 1200), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(1854, 0 - 1920, 36) rotation=1}, mSources= { InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1920,36], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_GESTURES, mFrame=[0,0][0,1200], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_GESTURES, mFrame=[1920,0][1920,1200], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_MANDATORY_GESTURES, mFrame=[0,0][1920,36], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_MANDATORY_GESTURES, mFrame=[0,1128][1920,1200], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_TAPPABLE_ELEMENT, mFrame=[0,0][1920,36], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_TAPPABLE_ELEMENT, mFrame=[0,1128][1920,1200], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_IME, mFrame=[0,639][1920,1200], mVisibleFrame=[0,639][1920,1200], mVisible=false, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_EXTRA_NAVIGATION_BAR, mFrame=[0,1128][1920,1200], mVisible=true, mInsetsRoundedCornerFrame=true} } host=com.collabora.libreoffice/org.libreoffice.androidlib.LOActivity from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6740 09-26 11:48:08.094 11738 11738 I ViewRootImpl@7b34d7c[LOActivity]: handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1920,1200] display=[0,0][1920,1200] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=0 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=false displayChanged=false 09-26 11:48:08.094 7754 7754 I BluetoothDevicePreference: onDeviceAttributesChanged :: Device = (N) Gecko Keyboard, isBonded = 12 , mIsOnProgressAddVI = false [...] 09-26 11:48:08.227 1046 1184 V WindowManager: Checking to restart org.libreoffice.androidlib.LOActivity: changed=0x70, handles=0x5a3, mLastReportedConfiguration={mGlobalConfig={1.1 ?mcc?mnc [nl_NL] ldltr sw800dp w1280dp h728dp 240dpi xlrg land finger qwerty/v/v dpad/v winConfig={ mBounds=Rect(0, 0 - 1920, 1200) mAppBounds=Rect(0, 0 - 1920, 1128) mMaxBounds=Rect(0, 0 - 1920, 1200) mDisplayRotation=ROTATION_90 mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_90 mPopOver=off mStageConfig=undefined mFreeformTaskPinningState=unpinned mEmbedActivityMode=undefined mFreeformStashState=undefined} s.4526 fontWeightAdjustment=0 ff=0 bf=0 bts=0 themeSeq=0 nightDim=-1} mOverrideConfig={1.1 ?mcc?mnc [nl_NL] ldltr sw800dp w1280dp h728dp 240dpi xlrg land finger qwerty/v/v dpad/v winConfig={ mBounds=Rect(0, 0 - 1920, 1200) mAppBounds=Rect(0, 0 - 1920, 1128) mMaxBounds=Rect(0, 0 - 1920, 1200) mDisplayRotation=ROTATION_90 mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_90 mPopOver=off mStageConfig=undefined mFreeformTaskPinningState=unpinned mEmbedActivityMode=undefined mFreeformStashState=undefined} s.2 fontWeightAdjustment=0 ff=0 bf=0 bts=0 themeSeq=0 nightDim=-1}} 09-26 11:48:08.227 1046 1184 D WindowManager: startFreezingDisplayLocked: exitAnim=0 enterAnim=0 called by com.android.server.wm.WindowManagerService.startFreezingDisplay:6870 com.android.server.wm.ActivityRecord.startFreezingScreen:7331 com.android.server.wm.ActivityRecord.startFreezingScreen:7291 com.android.server.wm.ActivityRecord.startFreezingScreenLocked:7286 com.android.server.wm.ActivityRecord.startFreezingScreenLocked:7268 com.android.server.wm.ActivityRecord.ensureActivityConfiguration:10582 com.android.server.wm.ActivityRecord.ensureActivityConfiguration:10388 com.android.server.wm.ActivityTaskManagerService.ensureConfigAndVisibilityAfterUpdate:6293 [...] 09-26 11:48:08.253 1046 6215 V WindowManager: Relayout Window{7da02b3 u0 Taskbar}: viewVisibility=0 req=1920x1200 d0 09-26 11:48:08.254 11738 11738 D LOActivity: onPause() - hinting to save, we might need to return to the doc 09-26 11:48:08.254 3335 3335 I HBD : a [NRIC] resetNoResponseState 09-26 11:48:08.254 11738 11738 I ViewRootImpl@7b34d7c[LOActivity]: stopped(true) old = false 09-26 11:48:08.254 11738 11738 I ViewRootImpl@7b34d7c[LOActivity]: WindowStopped on com.collabora.libreoffice/org.libreoffice.androidlib.LOActivity set to true [...] 09-26 11:48:08.264 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.264279 +0200 [ docbroker_001 ] INF Removing session [001] on docKey [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]. Have 1 sessions (1 active). IsLive: true, IsReadOnly: false, IsAllowChangeComments: true, IsEditable: true, Unloading: false, MarkToDestroy: false, LastEditableSession: true, DontSaveIfUnmodified: true, IsPossiblyModified: false| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:2670 09-26 11:48:08.265 11738 11976 D LOActivity: postMobileMessage: LIGHT_SCREEN [...] 09-26 11:48:08.617 11738 11981 D LOActivity: postMobileMessage: SAVE { "commandName": ".uno:Save", "success": true, "result": { "type": "boolean"}, "wasModified": false, "startUnixTimeMics": 32159649098, "saveDurationMics": 362490} 09-26 11:48:08.619 1046 2838 I ActivityManager: Changes in 10057 19 to 3, 0 to 8 09-26 11:48:08.627 11738 12041 I LOActivity: Success copying 23478 bytes from /data/user/0/com.collabora.libreoffice/cache/LibreOffice1715754063635789402.tmp to content://com.android.externalstorage.documents/.odt 09-26 11:48:08.629 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.629335 +0200 [ docbroker_001 ] INF ToClient-001: Command: unocommandresult: { "commandName": ".uno:Save", "success": true, "result": { "type": "boolean"}, "wasModified": false, "startUnixTimeMics": 32159649098, "saveDurationMics": 362490}| home/collabora/jenkins/workspace/package_android_release/wsd/ClientSession.cpp:1578 09-26 11:48:08.630 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.629943 +0200 [ docbroker_001 ] INF Nothing to save or upload. Terminating unloading DocumentBroker for docKey [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:2478 09-26 11:48:08.630 11738 11981 D coolwsd : INF Mobile-11981 2023-09-26 11:48:08.630029 +0200 [ kitbroker_001 ] INF ToMaster-001: ~ChildSession dtor [ToMaster-001]| home/collabora/jenkins/workspace/package_android_release/kit/ChildSession.cpp:122 09-26 11:48:08.630 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.630307 +0200 [ docbroker_001 ] INF Finished polling doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]. stop: true, continuePolling: true, CloseReason: [unloading], ShutdownRequestFlag: false, TerminationFlag: false| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:525 09-26 11:48:08.630 11738 11981 D coolwsd : INF Mobile-11981 2023-09-26 11:48:08.630318 +0200 [ kitbroker_001 ] INF Unloading session [001] on url [/data/user/0/com.collabora.libreoffice/cache/LibreOffice1715754063635789402.tmp].| home/collabora/jenkins/workspace/package_android_release/kit/Kit.cpp:1239 09-26 11:48:08.630 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.630549 +0200 [ docbroker_001 ] INF Flushing 1 sockets for doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp] for 2000000us| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:572 09-26 11:48:08.631 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.630893 +0200 [ docbroker_001 ] INF ToClient-001: End of disconnection handshake for 001| home/collabora/jenkins/workspace/package_android_release/wsd/ClientSession.cpp:1898 09-26 11:48:08.631 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:08.631114 +0200 [ docbroker_001 ] INF ToClient-001: ~ClientSession dtor [ToClient-001], current number of connections: 0| home/collabora/jenkins/workspace/package_android_release/wsd/ClientSession.cpp:115 [...] 09-26 11:48:10.248 1046 1073 W WindowManager: App freeze timeout expired. 09-26 11:48:10.248 1046 1073 W WindowManager: Force clearing freeze: ActivityRecord{8f7c009 u0 com.collabora.libreoffice/org.libreoffice.androidlib.LOActivity} t52} 09-26 11:48:10.250 1046 1073 I WindowManager: doStopFreezingDisplayLocked(MultiFreeze): Screen(#0) frozen for 2023ms, dc=Display{#0 state=ON size=1920x1200 ROTATION_90}com.android.server.wm.WindowManagerService.stopFreezingDisplayLocked:7078 com.android.server.wm.WindowManagerService.lambda$stopFreezingDisplayLocked$11:6973 com.android.server.wm.WindowManagerService.$r8$lambda$F5vAqSXWTdDItbQFPxsgmD3gEkI:0 com.android.server.wm.WindowManagerService$$ExternalSyntheticLambda1.accept:4 com.android.server.wm.RootWindowContainer.forAllDisplays:1556 com.android.server.wm.WindowManagerService.stopFreezingDisplayLocked:6972 com.android.server.wm.ActivityRecord.stopFreezingScreen:7397 com.android.server.wm.ActivityRecord.onAppFreezeTimeout:7358 09-26 11:48:10.250 1046 1073 D InputDispatcher: setInputDispatchMode: enabled=1, frozen=0 09-26 11:48:10.250 1046 1073 I WindowManager: Screen frozen for +2s22ms due to ActivityRecord{8f7c009 u0 com.collabora.libreoffice/org.libreoffice.androidlib.LOActivity} t52} [...] 09-26 11:48:10.632 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.631970 +0200 [ docbroker_001 ] INF Finished flushing socket for doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:595 09-26 11:48:10.633 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.632737 +0200 [ docbroker_001 ] INF Terminating doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp] with reason: unloading| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:3659 09-26 11:48:10.633 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.633352 +0200 [ docbroker_001 ] INF Terminating 0 clients of doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp] with reason: unloading| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:3626 09-26 11:48:10.634 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.634044 +0200 [ docbroker_001 ] INF Terminating child [100] of doc [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:3666 09-26 11:48:10.635 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.634844 +0200 [ docbroker_001 ] INF Completely cleared tile cache for: file:///data/user/0/com.collabora.libreoffice/cache/LibreOffice1715754063635789402.tmp| home/collabora/jenkins/workspace/package_android_release/wsd/TileCache.cpp:64 09-26 11:48:10.635 11738 11981 D coolwsd : INF Mobile-11981 2023-09-26 11:48:10.634916 +0200 [ kitbroker_001 ] INF #20: Setting TerminationFlag due to 'exit' command.| home/collabora/jenkins/workspace/package_android_release/kit/Kit.cpp:2587 09-26 11:48:10.635 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.635309 +0200 [ docbroker_001 ] INF Finished docBroker polling thread for docKey [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp]| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:650 09-26 11:48:10.635 11738 11980 D coolwsd : INF Mobile-11980 2023-09-26 11:48:10.635693 +0200 [ docbroker_001 ] INF Finished polling thread [docbroker_001].| home/collabora/jenkins/workspace/package_android_release/net/Socket.cpp:314 09-26 11:48:10.641 11738 12004 I LibreOffice: Detached finished sal thread res=0 09-26 11:48:10.643 11738 11981 I LibreOffice/androidinst: releaseMainThread DetachCurrentThread res=-1 09-26 11:48:10.643 11738 11981 D coolwsd : INF Mobile-11981 2023-09-26 11:48:10.643400 +0200 [ kitbroker_001 ] INF Kit unipoll loop run terminated.| home/collabora/jenkins/workspace/package_android_release/kit/Kit.cpp:3172 09-26 11:48:10.644 11738 11955 D coolwsd : INF Mobile-11955 2023-09-26 11:48:10.643636 +0200 [ prisoner_poll ] INF Removing DocumentBroker for docKey [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp].| home/collabora/jenkins/workspace/package_android_release/wsd/COOLWSD.cpp:410 09-26 11:48:10.644 11738 11955 D coolwsd : INF Mobile-11955 2023-09-26 11:48:10.644136 +0200 [ prisoner_poll ] INF ~DocumentBroker [%2Fdata%2Fuser%2F0%2Fcom.collabora.libreoffice%2Fcache%2FLibreOffice1715754063635789402.tmp] destroyed with 0 sessions left| home/collabora/jenkins/workspace/package_android_release/wsd/DocumentBroker.cpp:667 09-26 11:48:10.644 11738 11959 D coolwsd : INF Mobile-11959 2023-09-26 11:48:10.643713 +0200 [ websrv_poll ] INF Finished polling thread [websrv_poll].| home/collabora/jenkins/workspace/package_android_release/net/Socket.cpp:314 09-26 11:48:10.645 11738 11955 D coolwsd : INF Mobile-11955 2023-09-26 11:48:10.644566 +0200 [ prisoner_poll ] INF ~TileCache dtor for uri [file:///data/user/0/com.collabora.libreoffice/cache/LibreOffice1715754063635789402.tmp].| home/collabora/jenkins/workspace/package_android_release/wsd/TileCache.cpp:53 09-26 11:48:10.645 11738 11957 D coolwsd : INF Mobile-11957 2023-09-26 11:48:10.643880 +0200 [ accept_poll ] INF Finished polling thread [accept_poll].| home/collabora/jenkins/workspace/package_android_release/net/Socket.cpp:314 09-26 11:48:10.645 11738 11955 D coolwsd : INF Mobile-11955 2023-09-26 11:48:10.645469 +0200 [ prisoner_poll ] INF Finished polling thread [prisoner_poll].| home/collabora/jenkins/workspace/package_android_release/net/Socket.cpp:314 09-26 11:48:10.646 11738 11954 D coolwsd : INF Mobile-11954 2023-09-26 11:48:10.643938 +0200 [ app ] INF Stopping server socket listening. ShutdownRequestFlag: true, TerminationFlag: true| home/collabora/jenkins/workspace/package_android_release/wsd/COOLWSD.cpp:5866 09-26 11:48:10.646 11738 11954 D coolwsd : INF Mobile-11954 2023-09-26 11:48:10.646116 +0200 [ app ] INF Exiting. Cleaning up lingering documents.| home/collabora/jenkins/workspace/package_android_release/wsd/COOLWSD.cpp:5884 09-26 11:48:10.646 11738 11954 D coolwsd : INF Mobile-11954 2023-09-26 11:48:10.646362 +0200 [ app ] INF Requesting child processes to terminate.| home/collabora/jenkins/workspace/package_android_release/wsd/COOLWSD.cpp:5978 09-26 11:48:10.647 11738 11954 D coolwsd : INF Mobile-11954 2023-09-26 11:48:10.647054 +0200 [ app ] INF Process [coolwsd] finished with exit status: 0| home/collabora/jenkins/workspace/package_android_release/wsd/COOLWSD.cpp:6002 09-26 11:48:10.647 11738 11954 D coolwsd : INF Mobile-11954 2023-09-26 11:48:10.647271 +0200 [ app ] INF Forced Exit with code: 0| home/collabora/jenkins/workspace/package_android_release/common/Util.cpp:1142 09-26 11:48:10.768 1046 1373 I WindowManager: WIN DEATH: Window{f30e9d0 u0 com.collabora.libreoffice/org.libreoffice.androidlib.LOActivity} ```
Ezinnem commented 12 months ago

If the issue only occurs when the Bluetooth keyboard has a low battery charge, it may be a connection issue and not a bug on our end.

@bjorn3 please can you confirm that this issue does not occur when the Bluetooth keyboard has been charged?

bjorn3 commented 12 months ago

It doesn't occur when the keyboard has been charged. Either way I don't expect Collabora Office to literally exit when there is a connection issue with the keyboard. Instead I did expect the virtual keyboard to disappear when the bluetooth keyboard gets connected and appear when it gets disconnected while staying in the document editor.

bjorn3 commented 12 months ago

Also the exit to the initial screen happens about 2s after connecting. I believe the keyboard is still connected after those 2s.