Приложение моей камеры, которое дает нулевое значение в Samsung Galaxy S - PullRequest
3 голосов
/ 16 октября 2011

Я разработал приложение камеры с камерой по умолчанию. Это приложение работает во всех других телефонах Android, но некоторые проблемы с Samsung Galaxy S

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

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

Когда я даю EXTRA_OUTPUT, Galaxy S возвращает нулевое значение. Так что я не мог определить путь к файлу и имя перед вызовом камеры. Когда мы делаем снимок с помощью этого приложения, Galaxy S сохраняет это изображение в местоположении по умолчанию, а не сохраняет в заранее определенном месте.

Если у кого-то есть решение для этого, пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 12 января 2016

Найденный ответ Вот лучший пример, который беспокоит вас об устройстве!

AndroidCameraUtils - Скачать проект и отБиблиотечный проект, включив его ниже, представляет собой фрагмент кода, который вы можете использовать!

 private void setupCameraIntentHelper() {
    mCameraIntentHelper = new CameraIntentHelper(this, new CameraIntentHelperCallback() {
        @Override
        public void onPhotoUriFound(Date dateCameraIntentStarted, Uri photoUri, int rotateXDegrees) {
            messageView.setText(getString(R.string.activity_camera_intent_photo_uri_found) + photoUri.toString());

            Bitmap photo = BitmapHelper.readBitmap(CameraIntentActivity.this, photoUri);
            if (photo != null) {
                photo = BitmapHelper.shrinkBitmap(photo, 300, rotateXDegrees);
                ImageView imageView = (ImageView) findViewById(de.ecotastic.android.camerautil.sample.R.id.activity_camera_intent_image_view);
                imageView.setImageBitmap(photo);
            }
        }

        @Override
        public void deletePhotoWithUri(Uri photoUri) {
            BitmapHelper.deleteImageWithUriIfExists(photoUri, CameraIntentActivity.this);
        }

        @Override
        public void onSdCardNotMounted() {
            Toast.makeText(getApplicationContext(), getString(R.string.error_sd_card_not_mounted), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCanceled() {
            Toast.makeText(getApplicationContext(), getString(R.string.warning_camera_intent_canceled), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCouldNotTakePhoto() {
            Toast.makeText(getApplicationContext(), getString(R.string.error_could_not_take_photo), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onPhotoUriNotFound() {
            messageView.setText(getString(R.string.activity_camera_intent_photo_uri_not_found));
        }

        @Override
        public void logException(Exception e) {
            Toast.makeText(getApplicationContext(), getString(R.string.error_sth_went_wrong), Toast.LENGTH_LONG).show();
            Log.d(getClass().getName(), e.getMessage());
        }
    });
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    mCameraIntentHelper.onSaveInstanceState(savedInstanceState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mCameraIntentHelper.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    mCameraIntentHelper.onActivityResult(requestCode, resultCode, intent);
}
}
  • Добавьте подкладку ниже, чтобы показать файл вашей деятельности android:configChanges="keyboardHidden|orientation|screenSize"

ПРИМЕЧАНИЕ : - Я пробовал много примеров использования камеры и, конечно же, есть и другие способы справиться с этим, но для начинающих и людей, которые не слишком знакомы с основными понятиями, было бы более комфортно в этом проекте.Спасибо!

0 голосов
/ 17 октября 2011

Для этого я определил местоположение для EXTRA_OUTPUT как Uri, кэшировал его в статической переменной или переменной-члене, а затем в результате onActivity использовал кэшированное местоположение для получения изображения. У меня была та же проблема, которую вы описывали, и это, кажется, работает нормально. Единственным недостатком является наличие 2 копий изображения, одна в месте, которое вы определили в EXTRA_OUTPUT, и одна в месте по умолчанию.

...