2011-12-15 6 views
0

私のアプリケーションでAndroidからカメラを使用しています......私の要件は、ライブ画像をキャプチャしてカメラではなく私が決めた場所に保存していますギャラリーからのフォルダー。 そして、Uriの助けを借りて写真を取り出し、それを私のアプリケーションに表示してください。Androidカメラ:カメラから画像を保存中に奇妙な動作が発生する

しかし、私が実装しているのは、いくつかのデバイスといくつかのデバイスで正しく動作しています。私のコードはフォルダとキャプチャされたイメージを作成できませんでした。

私はギャラクシーSとギャラクシーSIIの上で私のアプリを試しました....ギャラクシーSは正常に動作していないと奇妙なことはいくつかのSIIデバイスでは正常に動作しますが、しかし、Galaxy Tabではすべてがうまくいきます。

また、私はNexus Sでそれをテストしました。ここでは問題はNexus Sでカメラを起動して画像をキャプチャした後、画像プレビューが表示され、そこに保存するオプションが2つあります。取り消しや取り戻し....しかし、私は何も起こらないように頼んだら、取り消すとカメラが解放され、設計どおりに作業を取り戻すことができます。

私もデバイスは(ギャラクシーSIIのような)同じメーカーのです....異なるデバイス上のさまざまな知見がある理由を理解しない

私は私のコードを投稿しています...誰かがヒントを持っている場合とそれを共有してください私...ありがとう。

public static String EXTERNAL_STORAGE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/DCIM/"; 

    private String imagePath = ImageDecoder.EXTERNAL_STORAGE_PATH; 

    imagePath = imagePath + projectdata.getProjectName().toString().trim() + "/" 
          + System.currentTimeMillis() + ".jpg"; 
        File imageFile = new File(imagePath); 
        Uri imageFileUri = Uri.fromFile(imageFile); 
        Intent captureImage = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        captureImage.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri); 
        startActivityForResult(captureImage, CAMERA_PIC_REQUEST); 



    @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      String imgDescription = null; 
      switch (requestCode) { 

      case CAMERA_PIC_REQUEST: 
       if (resultCode == RESULT_OK) { 

        cam = new Controller_Camera(context, sessiondata, projectdata); 
        imgDescription = getString(R.string.DEFAULT_IMAGE_TITLE) + DateTimeUtility.GetSystemDate(); 

        String response = cam.savePhotoWithIssue(imagePath, app, imgDescription, 
          getString(R.string.DEFAULT_ISSUE_NAME), getString(R.string.DEFAULT_IMAGE_TITLE)); 
        if (response == "Successfull") { 
         Intent issueeditor = new Intent(context, IssueEditor.class); 
         issueeditor.putExtra("TODO", "editissue"); 
         issueeditor.putExtra("TAB", "Photos"); 
         issueeditor.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         finish(); 
         startActivity(issueeditor); 
        } else { 
         Toast.makeText(context, getResources().getString(R.string.FAILURE_SAVING), Toast.LENGTH_SHORT) 
           .show(); 
        } 
       } 
       break; 

答えて

0

だけでSDカードが装着されているかどうかを確認するか

private boolean isSDCARDMounted() { 
    String status = Environment.getExternalStorageState(); 
    if (status.equals(Environment.MEDIA_MOUNTED)) 
     return true; 
    return false; 
    } 



if (isSDCARDMounted()) { 

     File f = new File(Environment.getExternalStorageDirectory(), 
      TEMP_PHOTO_FILE); 
     try { 
     f.createNewFile(); 
     } catch (IOException e) { 

     } 
     return f; 
    } 
関連する問題