【发布时间】:2014-03-12 18:06:35
【问题描述】:
这就是我想要实现的。 我有 2 台安卓设备,我想通过蓝牙访问第二台的摄像头并在第一台上显示预览。
任何提示如何做到这一点?
基本上我想通过蓝牙获取另一个安卓设备的相机实例。
【问题讨论】:
标签: android camera android-bluetooth
这就是我想要实现的。 我有 2 台安卓设备,我想通过蓝牙访问第二台的摄像头并在第一台上显示预览。
任何提示如何做到这一点?
基本上我想通过蓝牙获取另一个安卓设备的相机实例。
【问题讨论】:
标签: android camera android-bluetooth
简答:
您无法通过这种方式获得直接实例。也就是说 - 你不会得到一个可以正常使用的相机对象。相反,您将不得不大量伪造它。
长答案:
您将不得不在两台设备之间建立蓝牙客户端/主机关系。完成后,您将设置一个作为这种关系的“控制”方面,另一个作为相机。我们将它们称为 1 和 2。
1 将有一个 UI(拍照按钮等)。当一个按钮被按下时,一个命令将向下移动到 2。
2 然后将按照命令请求并将一些数据传回 1。
在拍照的情况下:
用户在 1 中按下拍照按钮。 1 向 2 发送“拍照”命令。 2 然后根据您的指示使用此命令拍照。 2 然后通过蓝牙将这张图片的文件结果发回。
对于进行图像预览 - 即在您实际单击“捕获”之前查看图像是什么 - 我认为您不会有太多运气。您可以按照上述模式执行此操作,但我怀疑这是否会是顺畅的体验。
编辑:
在 cmets 中与 Alex 进行了一些讨论,并对此进行了一些思考,我有一些想法可供预览。
关注点:
如果您可以从 2 到 1 获得大约 10-15 fps,则可以进行合理的预览。根据您的需求/用例,可能更少。
你需要实现
Camera.PreviewCallback:
onPreviewFrame(byte[] data, Camera camera); :
http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html#onPreviewFrame(byte[], android.hardware.Camera),并注册你的回调
相机
setPreviewCallback(Camera.PreviewCallback cb)
您需要缩减采样(可能,我不确定 onPreviewFrame 中提供的内容的大小)以保持较小的内容大小。
4) 发送。
我不完全确定这是否可行,因为我没有测试过,但这是我看到的最直接的路线。
另一种选择:
进入 JNI 并在那里处理整个事情。就速度而言,您几乎可以肯定地在那个水平上完成这项工作。我对如何做到这一点有模糊的想法,但这将是一项相当艰巨的任务。
【讨论】: