Android - изображение с камеры не всегда сохраняется - PullRequest
0 голосов
/ 16 февраля 2012

Я использовал эту страницу: http://developer.android.com/guide/topics/media/camera.html

Чтобы узнать, как использовать существующее приложение камеры, чтобы сделать фотографию и вернуть результат для моего приложения.

Иногда изображение сохраняется, иногдаэто не так.Я тестирую на планшете Samsung Galaxy (8,9).Если я оставлю разрешение на максимальном значении (2048x1536) и сделаю фотографию в портретной ориентации, изображение никогда не сохранится.Если я сделаю снимок в альбомной ориентации, изображение сэкономит большую часть времени.Если я уменьшу его до 1024x768, изображение будет экономить большую часть времени (будь то портрет или пейзаж).

Ищем направление, чтобы выяснить это.

private void startCameraForCapture() {

    // create Intent to take a picture and return control to the calling application    
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    try {

        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE, getApplicationContext()); // create a file to save the image  
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

        // start the image capture Intent
        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);


    } catch (Exception e) {
        // TODO Auto-generated catch block

        _errorMessageTitle = "Error 'StartCamera'";

        _errorMessage = "Error: " + e.toString();

        showDialog(DIALOG_ERROR_GENERAL);

    }

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {        

        if (resultCode == RESULT_OK) {            

            showPhoto(2);

        } else if (resultCode == RESULT_CANCELED) {            

            // User cancelled the image capture        

        } else {            

            // Image capture failed, advise user    
            _errorMessageTitle = "Error in 'Take Photo'";

            _errorMessage = "Image Capture Failed";

            showDialog(DIALOG_NOTICE_GENERAL);

        }    

    }    

    if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {        

        if (resultCode == RESULT_OK) {    

            Toast.makeText(getApplicationContext(), "Video not yet supported", Toast.LENGTH_LONG).show(); 

            // Video captured and saved to fileUri specified in the Intent           


        } else if (resultCode == RESULT_CANCELED) {           

            // User cancelled the video capture       

        } else {           

            // Video capture failed, advise user       

        }    

    }

}

1 Ответ

0 голосов
/ 17 сентября 2012

Извините, должен был решить это некоторое время назад.Проблема заключалась в том, что я был новичком в Android.

В методе OnCreate у меня была функция удаления файлов из папки Temp, которую я использовал для хранения изображений с фотографии (я добавил в OnCreate для целей очистки),

Я обнаружил, что OnCreate снова вызывается при изменении ориентации.

На некоторых устройствах Samsung камера поворачивает экран из портретной ориентации (что было единственной ориентацией, которую я разрешил в своем приложении) для альбомной ориентации.

Когда была сделана фотография, в зависимости от того, поворачивал ли пользователь свое устройство до выбора «Сохранить изображение», ориентация менялась.

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

...