2

私は CAMERA インテント アドロイドを使用して写真を撮り、写真ビュー内に表示しようとしています。以下のコードは、写真を撮るまで正常に動作します。その後、「V」ボタンで確認できず、アクティビティに戻ることができません。「X」ボタンをクリックすると、Android は写真のないアクティビティに戻りますが、「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
            }
        }
    }
}
4

3 に答える 3

2

他の誰かが私の間違いでつまずいた場合に備えて、ここに解決策があります。私はウェブサイトからそのサンプルを入手しましたが、この部分は 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);
于 2012-04-15T10:42:38.130 に答える