如何在Android模拟器上捕捉相机中的照片?

时间:2011-12-14 13:56:03

标签: android android-emulator android-camera

基于this article,我正在尝试从Android模拟器上的相机捕捉照片。我按照说明按照说明操作。但我没有得到积极的结果。

我在运行Player(Java应用程序)时,nullWebcamBroadcaster.java

以前有人能做到这一点吗?如果有,请让我该怎么做。

还有其他选项可以在Android模拟器上从相机中捕捉照片吗?

2 个答案:

答案 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();

顺便说一下,做这些事情的主要目的是什么? 所有相机对齐的东西都应该在真实设备上进行详尽的测试,因为它会导致模拟器不会出现的大量问题。相机的相机实现仅用于调试/测试目的!

我强烈建议不要花太多时间来让这个跑步,它不会导致你走得太远。但它仍未在真实设备上进行测试,这将是最重要的。

我希望我对这个答案没有太多让你失望:/