Android 相机卡住 - 无法拍摄照片

标签 android android-intent

我正在尝试使用 android 上的 CAMERA Intent 来拍摄照片并将其显示在图片 View 中。在我拍照之前,下面的代码工作正常。然后我无法使用“V”按钮确认并返回我的 Activity 。如果我单击“X”按钮,android 将返回到我的 Activity ,但没有照片,但如果我单击“V”确认图片,则什么也不会发生,我仍然停留在相机屏幕中。

我正在使用 API 14 并使用 Android 4.0.2 在虚拟和物理设备上进行测试。

我的错误在哪里?

import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class HandScryActivity extends Activity {

    private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
    private Uri uriSavedImage;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.handscry); 
        // Makes the filename
        File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
        imagesFolder.mkdirs();
        File image = new File(imagesFolder, "image_001.jpg");
        uriSavedImage = Uri.fromFile(image);
    }

    // Handles onGame clicked buttons
    public void btnHandClick(View v) {
            Button clickedButton = (Button) v;
        // according to clicked button
        switch (clickedButton.getId()) {
            case R.id.btnBackToGame:
                this.finish();
                break;
            case R.id.btnTakePicture:
                Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);               
                imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
                startActivityForResult(imageIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
                break;              
            default:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        ImageView img = (ImageView) findViewById(R.id.imgHand);
            if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
            // Display image
                if (resultCode == RESULT_OK) {
                    img.setImageURI(uriSavedImage);                                
            } else if (resultCode == RESULT_CANCELED) {
                // User cancelled the image capture
            } else {
                // Image capture failed, advise user
            }
        }
    }
}

最佳答案

这是解决方案,以防其他人犯我的错误。我从网站上获取了该示例,但这部分似乎卡住了 android,并且在成功的情况下无法获得“OnActivityResult”:

// Makes the filename
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "image_001.jpg");
uriSavedImage = Uri.fromFile(image);

应该替换为

File image = new File(Environment.getExternalStorageDirectory(), "test.jpg");        
uriSavedImage = Uri.fromFile(image);

关于Android 相机卡住 - 无法拍摄照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093462/

相关文章:

java - LIBGDX 在一个屏幕上制作 5 个不同的按钮

android - 以编程方式更改图像的颜色Android

android - 打瞌睡模式与网络状态

android - 按 Intent 更改android拨号器

android - 如果应用程序未启动,广播接收器不会收到广播

Android模拟器停止

android - 加载完成后,Flutter Smartrefresher不会隐藏

android - 小部件问题 : BroadcastQueue: Background execution not allowed: receiving Intent

android - startActivity 非法启动类型

android - 如何在横向模式下处理 float 菜单操作