2013-02-28 3 views
2

Я пытаюсь сделать снимок с камеры (Samsung S3 конкретные проблемы) ниже мой код для того же:NullPointer исключение при съемке с камеры

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 



    if(requestCode == 1337 && resultCode== RESULT_OK){ 
     Bundle extras = data.getExtras(); 
      if (extras != null){  
        BitmapFactory.Options options = new BitmapFactory.Options(); 
      // options.inSampleSize = 1; 
      // options.inPurgeable = true; 
      // options.inInputShareable = true; 
      thumbnail = (Bitmap) extras.get("data"); 
      image(thumbnail); 
    }else{ 
       Toast.makeText(CreateProfile.this, "Picture NOt taken", Toast.LENGTH_LONG).show(); 
     } 

Функция изображения:

 public void image(Bitmap thumbnail){ 
     Bitmap photo = thumbnail; 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     photo.compress(Bitmap.CompressFormat.PNG, 100, bos); 
     b = bos.toByteArray(); 
     ImageView imageview = (ImageView)findViewById(R.id.imageView1); 
     } 

код для запуска намерения камеры:

 if(i==0){ 
         Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
         startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
       } 

Журнал Cat:

http://img534.imageshack.us/img534/8388/logcamera.png

http://img585.imageshack.us/img585/7559/camera1u.png

Мой код работает отлично для HTC Wildfire S, Dell XCD35, Samsung Galaxy Большой и Samsung Galaxy Tab, ключ меньше, почему отображается эта ошибка в S3. Любые вести?

+0

Почтовый код для начального намерения для камеры .. – user370305

+0

Что на линии 1352? – Egor

+1

Я думаю, что 'thumbnail = (Bitmap) extras.get (" data ");' возвращает 'NULL' Bitmap. – user370305

ответ

2

Ну, из вашего вывода LOGCAT кажется, что активность камеры возвращает URI к фотографии. и ни эскизов, просто чтобы убедиться, что использование:

if (extras.keySet().contains("data")){ 
     thumbnail = (Bitmap) extras.get("data"); 
     image(thumbnail); 
} 

Относно разбор Uri В намерении вы можете использовать следующее:

Uri imageURI = getIntent().getData(); 
ImageView imageview = (ImageView)findViewById(R.id.imageView1); 
imageview.setImageURI(imageURI); 

поэтому полный код будет выглядеть примерно так:

if (extras.keySet().contains("data")){ 
     thumbnail = (Bitmap) extras.get("data"); 
     image(thumbnail); 
} else { 
    Uri imageURI = getIntent().getData(); 
    ImageView imageview = (ImageView)findViewById(R.id.imageView1); 
    imageview.setImageURI(imageURI); 
} 
+0

Его сообщение об ошибке .getKeys() – Skynet

+0

Метод getKeys() не определен для типа Bundle – Skynet

+0

Он не решает проблему, так как в ней не удается выполнить условие if true. – Skynet

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