2015-03-12 4 views
-1

Этого код вызываются для во время моего onActivityResult() для моего Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);BitmapFactory обыкновение decodeFile в 4.4.4, но будет декодировать в 4.2.2

Специфической линии, которая вызывает проблемы являются Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath,bmOptions); ближе к концу блока возвращается Null , и, таким образом, сбой при попытке передать растровое изображение на bitmap = cropSquare(bitmap);

Он падает только на 4.4.4, но отлично работает на 4.2.2. bmoptions инициализируется, и mCurrentPhotoPath также.

   ImageView profilePhotoFld = (ImageView) findViewById(R.id.item_photo); 
       /* There isn't enough memory to open up more than a couple camera photos */ 
       /* So pre-scale the target bitmap into which the file is decoded */ 

       /* Get the size of the ImageView */ 
       int targetW = profilePhotoFld.getWidth(); 
       int targetH = profilePhotoFld.getHeight(); 

       /* Get the size of the image */ 
       BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
       bmOptions.inJustDecodeBounds = true; 
       BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); 
       int photoW = bmOptions.outWidth; 
       int photoH = bmOptions.outHeight; 

       /* Figure out which way needs to be reduced less */ 
       int scaleFactor = Math.min(photoW/targetW, photoH/targetH); 


       /* Set bitmap options to scale the image decode target */ 
       bmOptions.inJustDecodeBounds = true; 
       bmOptions.inSampleSize = scaleFactor; 
       bmOptions.inPurgeable = true; 



       /* Decode the JPEG file into a Bitmap */ 
       Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath,bmOptions); 

       /* Associate the Bitmap to the ImageView */ 
       bitmap = cropSquare(bitmap); 
       profilePhotoFld.setImageBitmap(bitmap); 
       itemPhoto = bitmap; 
       itemPhoto = itemPhoto.createScaledBitmap(itemPhoto,640,640,false); 
+0

определить «аварии» – Selvin

+0

«К сожалению, прекратил работать». исключение null-указателя, потому что я передаю нулевой битмап, возвращенный из 'BitmapFactory.decodeFile()' to 'cropSquare()' образец photointentактивности, представленный на веб-сайте разработчиков Android, отлично работает. Теперь я отлаживаю. кажется, что 'mCurrentPhotoPath' сильно отличается в обоих приложениях. –

+0

... и что написано в документации inJustDecodeBounds? – Selvin

ответ

0

ok после экстренного сравнения моего приложения с приложенным образцом. моя проблема была лицевой ладони в моем файле манифеста.

Я имел

<uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 

и, очевидно, должен был использовать

<uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

благодарит за тех, кто потратил время на размышления о моей проблеме. имеют отличный день y'all

+0

Это никогда не могло быть причиной, поскольку/data/data/..... является внутренней памятью, для которой вам не требуется это разрешение. – greenapps

+0

с этим изменением, он меняет его на ту же схему именования, предоставляемую photointentsample, '/ storage/emulated/0/Pictures/CameraSample/IMG_20150312_105211_-1050594733.jpg', и он работает. поэтому по какой-то причине Bitmapfactory.decodefile() не будет использовать путь внутренней памяти и вернет значение null для декодированного растрового изображения. –

 Смежные вопросы

  • Нет связанных вопросов^_^