3

カメラを呼び出して画像をキャプチャしています。画像ビューに設定する前に、10枚の画像を1つずつキャプチャしてSDカードに保存する必要があります。以下のコードを確認してください。画像ビューに設定されていません。

SDカードに保存して取得し、画像ビューに設定するにはどうすればよいですか?保存する前に画像に名前を付けるにはどうすればよいですか?

最初のアクティビティでは、カメラを呼び出しています。

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mContext = this;
    init();
}

private void init() {
    String extStorageDirectory = Environment.getExternalStorageDirectory()
            + "/testing";

    File xmlDirectory = new File(extStorageDirectory);
    if (!xmlDirectory.exists())
        xmlDirectory.mkdirs();

    iv1 = (ImageView) findViewById(R.id.iv1);
}

private OnClickListener onBtnClicked = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case PHOTO:
                Intent selectImageIntent = new Intent(first.this,
                        second.class);
                startActivityForResult(selectImageIntent, 1);
                break;
        }
    }
};

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            String result = data.getStringExtra("result");

            Log.d("*****************",
                    "inside onactivityresult in main activity=" + result);

            Bitmap bitmap = BitmapFactory.decodeFile(result);
            iv1.setImageBitmap(bitmap);
            iv1.setScaleType(ScaleType.FIT_XY);
        }
    }
}

そして、2番目のアクティビティでは、画像をキャプチャして最初のアクティビティに渡します。

private void init() {
    picturePath = Environment.getExternalStorageDirectory() + "/Camera/"
            + "test.jpg";
    System.out.println("thumbnail path~~~~~~" + picturePath);
    File file = new File(picturePath);
    outputFileUri = Uri.fromFile(file);
}


public void startCamera() {
    Intent intent = new Intent(
            android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, IMAGE_CAPTURE);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK) {
            Intent returnIntent = new Intent();
            returnIntent.putExtra("result", picturePath);
            setResult(RESULT_OK, returnIntent);
            finish();
        }
    }
}
4

2 に答える 2

0

Other Method 内でオブジェクトを初期化することはお勧めできません。

iv1 = (ImageView) findViewById(R.id.iv1);メソッドからこの行を削除し init()、OnCreate() を以下の方法に変更します。

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
//Initialize here
    iv1 = (ImageView) findViewById(R.id.iv1);

    mContext = this;
    init();

}

それがあなたを助けることを願っています。

于 2013-01-24T12:46:53.440 に答える
0

このコードを使用してファイル名とパスを入力すると、カメラは画像をキャプチャして指定された名前で保存します

 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
           if (!APP_FILE_PATH_Media.exists()) 
          {
               APP_FILE_PATH_Media.mkdirs();
          }
         uriSavedImage =new File(APP_FILE_PATH_Media+ "/" +
                    "filename"+ ".jpeg");
       cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(uriSavedImage));
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 

onActivityResult() で、このコードを使用して imageView を設定します

try
                 {
                 BitmapFactory.Options options = new BitmapFactory.Options();
                 options.inSampleSize = 1;
                 bm = BitmapFactory.decodeFile(uriSavedImage.getAbsolutePath(), options);
                 }
                 catch(Exception ee)
                 {

                 }
于 2013-01-24T13:09:12.027 に答える