如何通过蓝牙访问相机?

时间:2014-03-12 18:06:35

标签: android camera android-bluetooth

这就是我想要实现的目标。 我有2个Android设备,我想通过蓝牙访问第二个摄像头并在第一个上显示预览。

任何提示如何做到这一点?

基本上我想通过蓝牙获得另一个Android设备的相机实例。

1 个答案:

答案 0 :(得分:5)

简答:

您无法通过这种方式获得直接实例。那就是 - 你不会得到一个你能正常使用的相机对象。相反,你将不得不伪造相当数量。

长答案:

您必须在两台设备之间建立蓝牙客户端/主机关系。在您完成之后,您将设置一个作为"控件"这种关系的方面,另一个作为相机。我们将这些称为1和2。

1将有一个UI(拍照按钮等)。按下按钮时,命令将沿着该行向下移动到2。

然后

2将在命令请求时执行,并将一些数据传回1。

在拍照的情况下:

用户按下1中的拍照按钮.1发送命令"拍摄照片​​"到2. 2然后使用此命令根据您的指示拍摄照片。 2然后通过蓝牙将该图片的文件结果发回。

进行图像预览 - 在您实际点击之前看到图像是什么?#34;捕获" - 我觉得你不会有太多运气。您可以按照上述模式执行此操作,但我怀疑这将是一次顺利的体验。

编辑:

经过与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并处理整个事情。几乎可以肯定,在速度方面,这项工作可以达到这个水平。关于如何做到这一点,我有一些模糊的想法,但这将是一项相当大的工作。