Uri моей камеры Android возвращает нулевое значение, но исправление Samsung уже на месте, помогите?

Итак, мне известно о проблеме с камерой на устройствах Samsung. Вам необходимо создать Uri перед вызовом намерения камеры следующим образом:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, m_username);
mImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

В этом примере создается Uri для камеры, в которой будут храниться данные. В моем приложении есть функция камеры в двух местах. Оба они идентичны (прямое копирование и вставка), но в одном действии объект mImageUri становится пустым во время процесса камеры, а в другом - нет. Последний работает нормально, но первый дает нулевое значение, которое, в свою очередь, мешает мне сохранить изображение, просмотреть его и т. Д. Я предоставлю код onResult ниже:

case CAMERA_PIC_REQUEST :
if(resultCode == RESULT_OK) {
    if(intent != null) {
        //For non-Samsung devices
        Log.e("Intent value:", intent.toString());
        mImageUri = intent.getData();
    }

    mAvatar = BitmapStatic.createImage(mImageUri, this);
    Drawable draw = new BitmapDrawable(getResources(), mAvatar);
    m_photoButtonE.setImageDrawable(draw);
    m_imageChanged = true;
}
break;

Приведенный выше пример взят из рабочего действия. Ниже показано действие, в котором это не работает:

//On pressing the "Take Photo" button:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, mUsername);
mImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
if(mImageUri == null) {
    Log.e("image uri is null", "what?");
}
else {
    Log.e("oh nevermind", "image uri is NOT null");
}
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

//On Result:
case CAMERA_PIC_REQUEST :
if(resultCode == RESULT_OK) {
    if(intent != null) {
        Log.e("Intent value:", intent.toString());
        mImageUri = intent.getData();
    }
    else {
        Log.e("Intent is null", "yep it is.");
        if(mImageUri == null) {
            Log.e("nullcheck on memberimageuri", "its null");
        }
        else {
            Log.e("nullcheckon memberimage", mImageUri.toString());
        }
    }
    mImage = BitmapStatic.createImage(mImageUri, this);
    Drawable draw = new BitmapDrawable(getResources(), mImage);
    mPhotoPreview.setImageDrawable(draw);
}
break;

Обратите внимание на файлы журнала, которые я поместил в этот второй пример. Когда я нажимаю кнопку Кнопка «Сделать снимок», проверка на null для объекта mImageUri возвращает истину. Таким образом, этот объект не является нулем. ll. Но где-то в процессе съемки это значение ДЕЙСТВИТЕЛЬНО становится нулевым. Вторая проверка во время onResult () возвращает false. Опять же, это почти идентично моей настройке в другом упражнении, где все работает нормально.

Есть мысли?

20
задан JMRboosties 23 November 2011 в 19:58
поделиться