1

我通过创建意图来使用相机:

Intent cameraI = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

然后开始:

startActivityForResult(cameraI, request);

其中 request 是一个预定义的常量整数。

然后我有onActivityResult():

public void onActivityResult(int req, int res, Intent data) throws NullPointerException
{
    try{

    super.onActivityResult(req, res, data);
    if(req == request)
    {
        Bitmap picture = (Bitmap) data.getExtras().get("data");
        ImageView image = (ImageView) findViewById(R.id.imageView1);
        image.setImageBitmap(picture);
    }//if
    else
    {
        Toast.makeText(getApplicationContext(), "No picture taken", 4);
    }//else
    }catch (NullPointerException e){
        String error = "null pointer exception";
        Toast.makeText(getApplicationContext(), error, 4);
    }
}//onActivityResult

我的困境是这台电脑上没有摄像头。我得到了 eclipse 的默认棋盘格和移动方形动画。这真的起作用吗?我一直在单击“拍照”按钮,但没有任何反应。我想要发生的是拍摄一张照片,然后将其返回给调用 i 的活动。这是默认操作还是我必须指定我希望它在拍摄一张照片后返回?

提前感谢您的帮助。

4

3 回答 3

2

是的,较新的模拟器(2.3.3)应该可以进行测试。

一些设备存在以不同格式返回数据的问题。相反,您可以做的是,将一个位置(您可以选择)传递给相机应用程序,它将新图像保存到该位置,您可以盲目地使用您指定的位置。

例如

文件 tempFolder = 新文件(Environment.getExternalStorageDirectory().getAbsolutePath()
                + "/我的文件夹");
        tempFolder.mkdir();
        文件 = 新文件(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myfolder",
                String.valueOf(System.currentTimeMillis()) + ".jpg");
        意图意图 = 新意图(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(文件));
        startActivityForResult(意图,TAKE_PICTURE);
于 2012-05-18T04:00:25.847 回答
0

我不确定模拟器及其功能,但这里有一个教程,您可能会觉得有帮助:

http://achorniy.wordpress.com/2010/04/26/howto-launch-android-camera-using-intents/

于 2012-05-17T17:33:08.517 回答
0

有问题的代码最终起作用了。在设备上进行测试后,图片按要求返回。Eclipse 的模拟相机根本不起作用。如果我没记错的话,您可以启用相机,但这完全是一个不同的讨论。

于 2012-06-15T17:30:02.687 回答