昨天晚上有用户Post了这么一张图, 他在使用 Telegram 聊天app的过程中没有打开摄像头拍照,但是摄像头却自己弹了出来。
看的出来这是VIVO新出的型号NEX的手机,使用了机械式的隐藏摄像头, 理论上只有在拍照的时候才会弹出来摄像头。
于是这张图引起了一顿讨论,是否 telegram 在用户未知的情况下有后台偷拍的行为? 更深一层想的话,市面上的智能手机的摄像头都不是机械式的,那样的话即使其他app有偷拍行为,用户也不知道。 那么Telegram是不是真的有偷拍行为呢?
其实 Telegram 是一个开源的聊天工具,墙内的我们可能不了解,这个app作为双端加密的聊天工具在墙外用的人很多。而且它的代码还是开源的。 传送门:https://github.com/DrKLO/telegram
它关于摄像头的控制代码在这里: https://github.com/DrKLO/Telegram/blob/56e22d4c59fef4a94a8d174eb400e058460de994/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraController.java#L81
小编扒了它的代码后发现它走的是正常的摄像头请求流程,并没有什么黑科技。它在 initCamera()中先执行了 open 操作,然后又release了它。其实只是获取了预览参数,并没有调用 startPreview和拍照相关API。
Telegram官方稍候给出的解释是app在没有使用摄像头的情况下只获取了可用的摄像头设备列表,没有请求设备的行为。
做过安卓开发的知道要打开摄像头进行预览的话需要先请求设备列表,然后请求前置/后置摄像头,之后才能开始预览。 所以这个问题是NEX在 Telegram 请求摄像头参数时就弹出了相机,即使release了也没有缩回去。
之前推过一篇文章分析了如何在用户不知情的情况下打开摄像头,但是这个技术也有个前提是用户得同意app请求摄像头权限。到目前为止还没有比较简单的技术手段可以绕过Android的权限系统打开摄像头。
文章传送门:如何后台拍照
但是万一真的有这种技术的话,估计只能跟扎克伯格一样了。