3

ファイルを SD カードにローカルに保存するカメラをアプリに含めようとしています。カメラ アプリケーションは起動しますが、resultCode は常に 0 です。マニフェストに次のアクセス許可を追加しました。

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

これが私のカメラのコードです:

@SuppressLint("SimpleDateFormat")
private void takePicture(){
    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/resources/resources/WI1");
    SimpleDateFormat timeStampFormat = new SimpleDateFormat("MM/dd/yyyy");
    String image_name =username +"-"+ timeStampFormat.format(new Date())+".png"; 
    File image = new File(imagesFolder, image_name);
    Uri uriSavedImage = Uri.fromFile(image);
    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
    int request_code = 100;
    startActivityForResult(imageIntent, request_code);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){ 
        Toast.makeText(this, "Image Saved", Toast.LENGTH_SHORT).show();
    }
    else
        Toast.makeText(this,"Error Saving Image, please throw device at wall", Toast.LENGTH_SHORT).show();
} // end on activity result

バグの原因は何ですか?ありがとう!

編集: 以前に投稿された logcat 情報は、この問題とは関係がないため、削除しました。EDIT2:

このコードを使用すると、カメラは問題なく動作します。誰かがそれを引き起こす原因を教えてもらえますか?

private void takePicture(){
    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/resources/resources/WI1");
    String image_name = "matt"+image_count+".png";
    image_count+=1; // this is at the moment useless.
    File image = new File(imagesFolder, image_name);
    Uri uriSavedImage = Uri.fromFile(image);
    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
    int request_code = 100;
    startActivityForResult(imageIntent, request_code);
}

編集 3: 問題は timeStampFormat にあります。それを除外すると、カメラは問題なく動作します。誰かが理由を説明できますか?私が間違っていなければ、選択した日付形式にスラッシュが含まれているためです。

4

2 に答える 2

-3

アクティビティに結果コードを設定していないため、0 になっています。アクティビティ b を a から呼び出し、アクティビティ bi で setReuslt(reuslt_ok) を設定すると、デフォルトで onactivity 結果のみが結果コードを result_ok として取得します。結果コードは 0 です

Android の内部カメラ アクティビティを開いているため、そこに結果コードを設定していないため、カメラ アクティビティが終了するとデフォルト コードが返されます。

于 2013-06-06T17:55:31.527 に答える