2011-12-15 2 views
0

Я использую камеру из Android в своем приложении ...... мое требование: я захватываю живое изображение и сохраняю его на месте, которое я решил не в камере папку из галереи. А затем выборка фотографий с помощью Uri и отображение их в моем приложении.Камера для Android: странное поведение при сохранении изображения с камеры

Но то, что я реализовал, работает правильно на каком-то устройстве, а на некоторых устройствах мой код не смог создать папку и захваченное изображение .... поэтому я ничего не получаю, когда мое приложение хочет отображать фотографии.

Я пробовал свое приложение на Galaxy S и Galaxy SII .... На галактике S он не работает должным образом, и странно, что некоторые устройства SII работают нормально, но некоторые не могут создать изображение и папку в указанном месте. Но на Galaxy Tab все работает нормально.

Также я тестировал его на Nexus S .... здесь проблема в чем-то отличается, на Nexus S, когда я запускаю камеру и захватываю изображение, после чего я могу видеть предварительный просмотр изображения, и там у меня есть 2 варианта сохранения, отменять или возвращать .... но когда я прошу ничего не сохранять, и когда я отменяю его, вы освобождаете камеру, и за ее работу, как она была разработана.

Я не понимаю, почему есть разные результаты на разных устройствах .... даже устройства от того же производителя (например, Galaxy 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; 
    } 
Смежные вопросы