背景:
我有一个谷歌眼镜,我正在考虑一个应用程序,它可以抓取用户使用本机摄像头拍摄的任何/所有图像,并将这些图像传递给在线服务(例如Twitter或Google+)。有点像一个生活博客风格的应用程序。
在我的第一个原型中,我实现了一个FileObserver服务,该服务监视玻璃存储其相机预览缩略图的目录中的新文件预览文件总是以t_开始,所以一旦我在那里看到一个新的文件,我就把它上传到我的webservice中。这是很好的工作,但在谷歌眼镜XE11这个缓存文件被移出我的可及范围(/data/私有缓存)。
现在,我正在查看sdcard/DCIM/Camera/文件夹中的新.jpg文件。这是可行的,但相机是存储的全尺寸的图像在那里,所以我必须等待5-8秒,然后图像是可用的上传。
问题是:
是否可以让后台服务在玻璃上运行,可以拦截摄像机事件,并从包中抓取缩略图或完整图像作为字节数组,这样我就不必等待它在访问之前写到磁盘上了吗?
我一直在阅读更多关于android开发的资料,我怀疑答案是在我的服务中实现一个BroadcastReciever,但我想在走错路之前,先与专家们商量一下。
事先非常感谢
里奇
发布于 2013-11-24 03:43:30
是。实现一个PreviewCallback。与手机的工作方式相同,例如:http://www.dynamsoft.com/blog/webcam/how-to-implement-a-simple-barcode-scan-application-on-android/
我在谷歌眼镜上做了测试,结果成功了。在这篇文章( 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);https://stackoverflow.com/questions/19866124
复制相似问题