【问题标题】:Delphi Android App crash on keyboard connect/disconnectDelphi Android App在键盘连接/断开时崩溃
【发布时间】:2015-01-27 17:38:44
【问题描述】:

创建一个 Android 应用程序,拖放一个编辑框,运行该应用程序。

  • 连接条形码扫描仪,应用程序崩溃。
  • 连接条形码扫描仪并运行应用程序,一切正常。
  • 断开扫描仪和应用程序崩溃。

如果应用程序正在运行,无论是蓝牙还是有线,您都无法连接/断开键盘/条形码扫描仪。

有什么想法吗?

类似于App crashes when closing Keyboard on Android Delphi Xe7 但这不是同一个问题。

LogCat from Running App 然后连接条码扫描器

01-28 15:23:26.724 I/ActivityManager(668): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity} from pid 2642
01-28 15:23:26.779 I/ActivityManager(668): Start proc com.embarcadero.HeaderFooterApplication for activity com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity: pid=17902 uid=10178 gids={50178, 3002, 3001, 1006, 3003, 5012, 1028, 1015}
01-28 15:23:28.424 I/ActivityManager(668): Displayed com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity: +1s655ms
01-28 15:23:28.884 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] setSynchronousMode: SurfaceTexture has been abandoned!
01-28 15:23:28.884 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] queueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:28.884 W/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] cancelBuffer: BufferQueue has been abandoned!
01-28 15:23:28.889 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:28.889 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:28.889 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:28.889 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:36.054 I/WindowState(668): WIN DEATH: Window{41d09040 u0 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity}
01-28 15:23:36.054 I/ActivityManager(668): Process com.embarcadero.HeaderFooterApplication (pid 17902) has died.
01-28 15:23:36.054 W/ActivityManager(668): Force removing ActivityRecord{41612fe0 u0 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity}: app died, no saved state
01-28 15:23:49.274 I/ActivityManager(668): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity} from pid 2642
01-28 15:23:49.434 I/ActivityManager(668): Start proc com.embarcadero.HeaderFooterApplication for activity com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity: pid=18029 uid=10178 gids={50178, 3002, 3001, 1006, 3003, 5012, 1028, 1015}
01-28 15:23:51.094 I/ActivityManager(668): Displayed com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity: +1s668ms
01-28 15:23:51.589 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] setSynchronousMode: SurfaceTexture has been abandoned!
01-28 15:23:51.589 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] queueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:51.589 W/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] cancelBuffer: BufferQueue has been abandoned!
01-28 15:23:51.589 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:51.594 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:51.594 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:51.599 E/BufferQueue(142): [com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity] dequeueBuffer: SurfaceTexture has been abandoned!
01-28 15:23:59.329 W/InputDispatcher(668): channel '419b5198 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
01-28 15:23:59.329 E/InputDispatcher(668): channel '419b5198 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
01-28 15:23:59.329 W/InputDispatcher(668): Attempted to unregister already unregistered input channel '419b5198 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity (server)'
01-28 15:23:59.329 I/WindowState(668): WIN DEATH: Window{419b5198 u0 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity}
01-28 15:23:59.334 I/ActivityManager(668): Process com.embarcadero.HeaderFooterApplication (pid 18029) has died.
01-28 15:23:59.334 W/ActivityManager(668): Force removing ActivityRecord{419ef278 u0 com.embarcadero.HeaderFooterApplication/com.embarcadero.firemonkey.FMXNativeActivity}: app died, no saved state

【问题讨论】:

  • 如果不提供错误代码或有关崩溃的更多详细信息,任何人都无法帮助您解决此问题。
  • 没有错误码,App刚刚关闭,就这样。如何获取错误代码?
  • 假设您有设备的root访问权限,使用adb logcat查看系统日志。您应该在那里找到崩溃的详细信息。

标签: android delphi keyboard firemonkey delphi-xe7


【解决方案1】:

来自Embarcadero Community site 的解决方案(根据 Ernie Thomason 的建议更新了其他项目)

您需要将keyboard 添加到Android Manifest 模板AndroidManifest.template.xml 以避免在连接/断开外部USB 键盘时应​​用终止。

当前文件:

android:configChanges="orientation|keyboardHidden"

更新文件:

android:configChanges="orientati‌​on|keyboard|keyboardHidden|navigation|screenLayout|screenSize"

以下是有关模板文件的一些附加信息:

当您构建项目时,RAD Studio 使用AndroidManifest.template.xml 作为模板在输出目录中生成AndroidManifest.xml。您将需要编辑与您的项目位于同一文件夹中的模板文件。

【讨论】:

  • 谢谢 Dalija,我就是在 Embarcadero 社区网站发帖的那个人。我也请 Sarina D 在这里回答这个问题,以表扬她。
  • 我没有看到 Sarina D 在这里回答问题,所以我发布了带有指向她答案的链接的答案,以便为面临相同问题的其他人提供解决方案,这些问题将在 SO 上搜索答案。
  • 我必须再添加一些项目,这样我的活动就不会在键盘连接时重新启动。我的完整列表:android:configChanges="keyboard|keyboardHidden|navigation|screenLayout|orientation|screenSize"
  • @ErnieThomason 谢谢,我已经更新了答案以使其更加完整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多