2017-04-30 3 views
0

こんにちは私は、写真を撮るために、私のアプリでカメラのAPIを使用しようとしています、それはまた、写真を撮って、それを保存して、しかし、写真を撮ると、0kbのファイルが作成されますが、どうすれば修正できますか?Android camera apiはnullファイルを作成します

private static final int CAMERA_REQUEST_CODE = 100; 
private static final int RESULT_LOAD_IMAGE = 101; 

private void ShowDialogForChoose() { 
    final AlertDialog.Builder builder = new AlertDialog.Builder(this) 
      .setAdapter(new ArrayAdapter<String>(this, 
          android.R.layout.simple_list_item_1, new String[] { 
          "Camera", "Gallery" }), 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
              int which) { 
          if (which == 0) { 
           Intent cameraIntent = new Intent(
             android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

           cameraIntent.putExtra(
             MediaStore.EXTRA_OUTPUT, 
             getTempUri()); 
           // Lav check om der er primission til at bruge camera 
           startActivityForResult(cameraIntent, 
             CAMERA_REQUEST_CODE); 
          } else if (which == 1) { 
           Intent i = new Intent(
             Intent.ACTION_PICK, 
             android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
           startActivityForResult(i, RESULT_LOAD_IMAGE); 
          } 
         } 
        }); 
    builder.create().show(); 
} 

private Uri getTempUri() { 
    // Create an image file name 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); 
    String dt = sdf.format(new Date()); 
    imageFile = null; 
    imageFile = new File(Environment.getExternalStorageDirectory() 
      + "/Fitness/", "Camera_" + dt + ".jpg"); 
    AppLog.Log(
      TAG, 
      "New Camera Image Path:- " 
        + Environment.getExternalStorageDirectory() 
        + "/Fitness/" + "Camera_" + dt + ".jpg"); 
    File file = new File(Environment.getExternalStorageDirectory() 
      + "/Fitness"); 
    if (!file.exists()) { 
     file.mkdir(); 
    } 
    if (!imageFile.exists()) { 
     try { 
      imageFile.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    imagePath = Environment.getExternalStorageDirectory() + "/Fitness/" 
      + "Camera_" + dt + ".jpg"; 
    imageUri = Uri.fromFile(imageFile); 
    return imageUri; 
} 

答えて

1

それはあなたがcreateNewFile()までお電話を経由して、0キロバイトのファイルを作成 0キロバイト

いいえ、のファイルを作成します。

どうすればこの問題を解決できますか?

createNewFile()への電話を削除します。それは必要ではありません。

+0

ありがとうございました:) – JonathanNet

関連する問題