基于this article,我正在尝试从Android模拟器上的相机捕捉照片。我按照说明按照说明操作。但我没有得到积极的结果。
我在运行Player
(Java应用程序)时,null
为WebcamBroadcaster.java
。
以前有人能做到这一点吗?如果有,请让我该怎么做。
或
还有其他选项可以在Android模拟器上从相机中捕捉照片吗?
答案 0 :(得分:9)
在 Android模拟器2.1中,我的代码正在捕获图像,但在其他版本的android中无效
要启动相机进行捕捉,您可以使用以下意图过滤器启动相机进行捕捉
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA_RESULT);
捕获后,您将获得图像作为位图,因此您需要获取活动结果
if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) {
Bundle extras = data.getExtras();
if(extras.containsKey("data")) {
Bitmap bmp = (Bitmap) extras.get("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] image = baos.toByteArray();
if(image != null) {
//User this byte array in your application
}
}else {
Toast.makeText(getBaseContext(), "Fail to capture Image", Toast.LENGTH_LONG).show();
}
}
修改强>
现在,几乎在所有模拟器中,此代码都在工作。
答案 1 :(得分:2)
正如他在文章中提到的那样,他急忙编写了这段代码,因此它可能有点儿麻烦。据说根本没有在任何地方工作。
我假设你正好使用这段代码来运行这个东西:
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();
顺便说一下,做这些事情的主要目的是什么? 所有相机对齐的东西都应该在真实设备上进行详尽的测试,因为它会导致模拟器不会出现的大量问题。相机的相机实现仅用于调试/测试目的!
我强烈建议不要花太多时间来让这个跑步,它不会导致你走得太远。但它仍未在真实设备上进行测试,这将是最重要的。
我希望我对这个答案没有太多让你失望:/