5

重複の可能性:
カメラを使用し、キャプチャした結果をAndroidのSDカードに保存する

カメラアプリから写真を取得し、SDに保存してimageViewを設定したい。以下のコードを作りました。保存とimageViewが機能することがあります。ただし、画像がSDに保存され、imageViewが機能しない場合があります。

imageView が動作しない場合、onActivityResult で mOutUri が null になるようです。

clkbutton の SharedPreferences に mOutUri を保存しようとしました。onActivityResult で uri を確認できますが、imageView は機能しません。このとき、mOutUri も null です。

public void clkbutton(View v){
    Intent intent = new Intent();

    // open camera app
    intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);

    // save data in SD card
    Date date = new Date();
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd-kk-mm-ss");
    String newPicFile = df.format(date) + ".jpg";
    mNewPicFile = newPicFile;
    String outPath = "/sdcard/" + newPicFile;
    File outFile = new File(outPath);
    mOutUri = Uri.fromFile(outFile);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, mOutUri);       
    startActivityForResult(intent, REQUEST_CAPTURE_IMAGE);
}


 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    ImageView imageView = (ImageView) findViewById(R.id.image_view);
    imageView.setImageURI(mOutUri);    
 }

時々エラーが発生したり、時には機能したりするのはとても奇妙です。

4

2 に答える 2

0

setImageUri の前に onActivityResult で、ファイルが存在するかどうかを確認する必要があります。アプリの向きが変わると mOutUri コンテンツが失われる可能性があり、カメラを開いたときに発生することがあります。URI を設定に保存するアクティビティ onSaveInstanceState と、URI を復元する onRestoreInstanceState を実装する必要があります。

于 2012-10-12T06:51:03.923 に答える