android - 拍一张照片

标签 android android-camera

我遵循了一个使用 android 拍照的简单教程 (http://developer.android.com/guide/topics/media/camera.html)。

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
protected void onTakePicture()
{
    // create Intent to take a picture and return control to the calling application    
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    
    // create a file to save the image    
    File file = Environment.getExternalStorageDirectory();
    String path = file.getAbsolutePath() + "/Android/data/com.myapplication/files";
    File dir = new File(path);
    if (!dir.isDirectory())
        dir.mkdirs();
    File outFile = new File(path + File.separator + "img.jpg");
    Uri fileUri = Uri.fromFile(outFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
    // set the image file name    
    // start the image capture Intent
    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);        
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode==CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
    {
         // Image captured and saved to fileUri specified in the Intent
        Uri fn = data.getData();
        Toast.makeText(this, "Image saved to:\n" + fn.toString(), Toast.LENGTH_LONG).show();
    }
}

我在 Activity 中调用它。现在的问题是,当camera activity出现时,我可以拍多张照片,但我只想拍一张,然后返回调用activity。在我离开相机 Activity (通过按“后退”按钮)之前,不会调用 onActivityResult 。然后 data.getData() 崩溃。

有什么想法吗?

谢谢 格哈德

最佳答案

嗯...这对我来说很适合捕捉图像:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
activity.startActivityForResult(intent, AbstractActivity.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

当用户拍照时,它会询问用户是否要接受这张图片,然后它会返回到我的 Activity ,我...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            handleAvatarUpload(data); // which uses Uri selectedImage = data.getData();
        } 
    }
}

我还没有收到任何关于此代码的崩溃报告,而且它已经发布了几个月。我们的用户群与我们类别中的其他应用一致,Android 2.3.3 用户占 71%,2.2 占 16.35%,2.1 占 5.7%

关于android - 拍一张照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10619810/

相关文章:

android - 找不到 gradle dsl 方法 'compile()'

java - 拍摄照片到外部存储<智能手机中的图库>

android - 如何更改Android复选框的背景?

android - 日历不返回 GMT

Android picasso 缓存图片

android - 如何获取TextInput中的光标位置以及光标位置之后的内容?

java - startActivityForResult 返回错误的 Activity

java - 如何使用套接字发送位图?

Android 相机照片预览即将倒转

Android:从相机获取图片 - 小心