任何人都知道为什么当应用程序尝试使用Camera Activity拍照时,蓝牙套接字会自动关闭?
蓝牙服务绑定到“相机活动”。
提前致谢!
答案 0 :(得分:2)
当相机活动占据屏幕时,您的活动可能会被销毁。其中一个原因是内存限制,你几乎无能为力。另一个原因可能是您的活动重新启动以进行横向定位(请注意,相机活动已固定为横向)。当您的活动消失后,该服务没有理由保持活力。
修复方法有:在应用内使用“自定义相机”;确保您的活动处理方向更改而不重新启动;即使活动被破坏,也要安排BT服务。
答案 1 :(得分:1)
如果在自定义相机活动中发生这种情况,我怀疑是多线程(或实际上,缺少多线程)。如果你在UI线程上打开相机,那么pictureTaken()
回调也将在同一个线程上调用,冻结UI(令人不愉快,但可能是可以容忍的),以及任何BT服务通信,这可能是致命的后者。
第一种治疗方法是将BT与次要线程进行通信,因为也可能存在其他互锁条件。
其次,在辅助事件线程上打开摄像头(参见example),然后摄像头回调不会冻结使用UI线程的UI和服务。