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の代わりに、enum値を使用します。

if(resultCode == RESULT_OK){

requestCode==TAKE_PICTUREドキュメントから、RESULT_OK = -1で、1を探していました。また、正しい意図に応答していることを確認するために、事前リクエストである必要があるをチェックしている場所がわかりません。

于 2012-12-07T23:37:20.993 に答える