如何在Android模拟器中使用网络摄像头捕获实时图像?

27
据我所知,Android模拟器没有摄像头。为了捕捉实时图像,我们必须使用网络摄像头。我在这个网站中看到了使用Android模拟器中的网络摄像头来捕捉图像的代码,但是我不知道如何使用这段代码。
1个回答

14
  1. 下载页面上列出的所有源文件:CameraSource、GenuineCamera、HttpCamera、SocketCamera、BitmapCamera和WebcamBroadcaster。
  2. 在您的项目中创建一个名为com.tomgibara.android.camera的包,并将前4个源文件放入其中。
  3. 这里下载并安装JMF。
  4. 使用以下命令编译WebcamBroadcaster:"C:\Program Files (x86)\Java\jdk1.6.0_15\bin\javac.exe" -classpath "C:\Program Files (x86)\JMF2.1.1e\lib" WebcamBroadcaster.java或等效的命令。
  5. 使用以下命令运行它并保持其运行状态:java "-Djava.library.path=C:\Program Files (x86)\JMF2.1.1d\lib" WebcamBroadcaster
  6. 在您的程序中使用以下代码:
CameraSource cs = new SocketCamera("192.168.0.100", 9889, 320, 240, true);
if (!cs.open()) { 
/* deal with failure to obtain camera */ 
} 
while(/*some condition*/) {   
cs.capture(canvas) //capture the frame onto the canvas
}
cs.close();

PS:我无法测试这个,因为当我运行WebcamBroadcaster时出错了。

PPS:今天我刚开始尝试使用Android,所以这一切都可能是错误的。


感谢您的回复。当我尝试创建包com.tomgibara.android.camera时,在第二个文件(GenuineCamera)中出现错误,显示没有“CameraDevice”类可用,而在第三个(HttpCamera)和第四个(SocketCamera)文件中,则显示宽度和高度方法不可用的错误。请问您能告诉我如何解决这些错误吗? - Kumar
1
我也遇到了同样的错误,以下是如何解决它们的方法:不要将GenuindCamera包含在项目中(只需删除它),因为显然它是用来在分发项目时方便移动到真正的相机(考虑多态性)。至于其余部分,您只需要在这些文件中注释掉@override即可。如果您有其他问题,请告诉我 :)顺便问一下,WebcamBroadcaster对您有用吗? - Leo Jweda
1
@kumar,请将 widthheight 分别替换为 getWidth()getHeight() - GAMA
我收到了 无法找到合适的播放器 的错误信息。可能是什么问题? - GAMA
JMF 已经/将会被弃用,请使用 JMyron。 - GAMA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接