0

我的 onCreate():

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            imageFile = new File(Environment.getExternalStorageDirectory(),
                    "/image.jpg");

            System.out.println(imageFile +" is the path with extentions");
            outputFileUri = Uri.fromFile(imageFile);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, TAKE_PICTURE);

        setContentView(R.layout.activity_head_size);

System.out.println("OnCreate");
    }

显然,这会启动相机并等待它完成并返回图像。完成后,它应该调用

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        }

但是,在我在相机中点击保存后,它会加载 onCreate 并重新运行相机。然后,如果您重新拍摄图像并点击保存,它将进入活动;但是,不运行 onActivityResult 吗?到底是怎么回事?

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if(resultCode == 1){
            myImage = (ImageView) findViewById(R.id.imageView1);


            myBitmap = BitmapFactory.decodeFile( Environment.getExternalStorageDirectory() +
                   "/image.jpg");



             myBitmap = Bitmap.createScaledBitmap(myBitmap, 256, 256, false);
                myImage.setImageBitmap(myBitmap);

                width = myBitmap.getWidth();
                height = myBitmap.getHeight();


                orig = new int[width*height];

                myBitmap.getPixels(orig, 0, width, 0, 0, width, height);

                System.out.println("ready for processing");
            }
        }
4

1 回答 1

1

使用枚举值,而不仅仅是硬编码的 int。

if(resultCode == RESULT_OK){

从文档中,RESULT_OK=-1,您正在寻找 1。此外,我看不到您在哪里检查requestCode==TAKE_PICTURE,这也应该是一个预先请求,以确保您响应正确的意图。

于 2012-12-07T23:37:20.993 回答