使用服务在Google Glass上访问本机相机事件的策略

时间:2013-11-08 18:32:25

标签: google-glass

背景:

我有一个谷歌眼镜,我正在考虑一个应用程序,可以使用本机相机抓取用户拍摄的任何/所有图像,并将这些图像传递到在线服务(例如Twitter或Google+)。有点像生活博客风格的应用程序。

在我的第一个原型中,我实现了一个 FileObserver 服务,该服务监视玻璃存储其相机预览缩略图的目录中的新文件( sdcard / google_cached_files / )。预览文件总是以t_开头,所以当我在那里看到一个新文件时,我将它上传到我的webservice。这工作得非常好,但是在Glass XE11中,这个缓存文件被移出了我的范围(/ data / private-cache)。

现在,我正在观看新的.jpg文件的文件夹 sdcard / DCIM / Camera / 。这样工作正常,但相机正在那里存储完整尺寸的图像,因此我必须等待5-8秒才能上传图像。

问题:

是否可以在可以拦截相机事件的玻璃上运行后台服务,并从Bundle中获取缩略图或完整图像作为字节数组,这样我就没有了在访问之前等待它写入​​磁盘?

我一直在阅读有关Android开发的更多信息,我怀疑答案涉及在我的服务中实现BroadcastReciever,但我想在走错路之前先咨询专家。

非常感谢提前

里奇

1 个答案:

答案 0 :(得分:1)

是。实现PreviewCallback。它适用于手机的方式,例如:http://www.dynamsoft.com/blog/webcam/how-to-implement-a-simple-barcode-scan-application-on-android/

我在Google Glass上进行了测试,但它确实有效。在这篇文章(http://datawillconfess.blogspot.com.es/2013/11/google-glass-gdk.html)中,我列出了相机在执行后返回的参数(视频下方):

     Camera m_camera = Camera.open(0);
     m_params = m_camera.getParameters();
     m_params.setPreviewFormat(ImageFormat.NV21);
     m_camera.setParameters(m_params);

     m_params = m_camera.getParameters();
     m_params.setPreviewSize(320,240);

     m_params.set("focus-mode",(String)"infinity");
     m_params.set("autofocus", "false");

     m_params.set("whitebalance",(String)"daylight");
     m_params.set("auto-whitebalance-lock",(String)"true");

     m_camera.setParameters(m_params);

     String s = m_params.flatten();
     Log.i("CAMERA PARAMETERS", "="+s);