如何在Android模拟器上从相机捕获照片?

5
基于这篇文章,我试图在Android模拟器上从相机中获取照片。我按照他们所说的指示操作,但是我没有得到积极的结果。
当我运行WebcamBroadcaster.java(Java应用程序)时,我得到了Playernull的结果。
有人以前实现过吗?如果是,请告诉我如何操作;或者,是否有其他选项可以从Android模拟器的相机中捕获照片?

这些链接可能会帮助你的代码和指南:<br/> http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html http://docs.phonegap.com/en/1.0.0/phonegap_camera_camera.md.html http://developer.appcelerator.com/question/127948/timed-photo-capture-in-android - Rizvan
2个回答

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();
    }
}

编辑:

现在几乎所有的模拟器都可以运行这段代码。


谢谢。我正在使用Android 2.3.3版本。还有其他选项吗? - bharath
在模拟器中,Android-2.1存在一个问题,只有相机可以正常工作,但在所有具备相机硬件的设备上都可以正常工作,因此为了测试目的,您可以使用带有Android 2.1的模拟器。 - Dharmendra

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

顺便问一下,这样做的主要目的是什么?所有与摄像头对齐的事情都应该在真实设备上进行详尽测试,因为它可能会引起许多在模拟器上没有发生的问题。摄像头的实现仅用于调试/测试目的!我强烈建议不要花太多时间来使其运行,这不会让你走得很远。然而,它仍未在真实设备上进行测试,这是非常重要的。希望我的回答没有让你太失望 :/

尽管我同意你的答案,但我必须说,在某些情况下,真机测试是困难的。在我目前的情况下,我在工作中测试我的个人安卓手机,并且没有提供真正的设备,同时我也没有权限在个人手机上连接到工作服务器。我的应用程序已经实现了zxing OR码 - 是的,我可以测试它是否在设备上正常读取,但我无法将此信息发送到服务器 - 因为我无法连接到它。 - shecodesthings

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