2014-12-05 4 views
2

Я работаю над приложением Android, в котором я получаю изображение из галереи и камеры. Для изображения галереи я получаю совершенно целенаправленные значения на onActivityresult, но на камеру, когда я хочу получить aim.getData() для Uri, это дает значение Null. Мой код приведен ниже, пожалуйста, помогите мне здесь:Цель камеры дает null на onActivityResult

public void onClick(DialogInterface dialog, int item) { 

         if(item==1){ 
         Intent intent = new Intent(); 
          intent.setType("image/*"); 
          intent.setAction(Intent.ACTION_GET_CONTENT); 
          startActivityForResult(Intent.createChooser(intent, 
            "Select Picture"), SELECT_PICTURE); 
        }if(item==0){ 

          dispatchTakePictureIntent(); 
         // open(); 
        }else{ 
         alert.cancel(); 
        } 
        alert.cancel(); 
        } 
        }); 


private void dispatchTakePictureIntent() { 
     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    } 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      // Uri selectedImageUri1 = data.getData(); 
      if (requestCode == SELECT_PICTURE) { 
       Uri selectedImageUri = data.getData(); 
       if (Build.VERSION.SDK_INT < 19) { 
        selectedImagePath = getPath(selectedImageUri); 

        Picasso.with(this).load(selectedImageUri).resize(100, 100).transform(new CircleTransform() { 
         @Override 
         public Bitmap transform(Bitmap source) { 
          int size = Math.min(source.getWidth(), source.getHeight()); 

          int x = (source.getWidth() - size)/2; 
          int y = (source.getHeight() - size)/2; 

          Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); 
          if (squaredBitmap != source) { 
           source.recycle(); 
          } 

          Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig()); 

          Canvas canvas = new Canvas(bitmap); 
          Paint paint = new Paint(); 
          BitmapShader shader = new BitmapShader(squaredBitmap, 
            BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); 
          paint.setShader(shader); 
          paint.setAntiAlias(true); 

          float r = size/2f; 
          canvas.drawCircle(r, r, r, paint); 

          squaredBitmap.recycle(); 

          return bitmap; 
         } 
        }).into(image); 

       } 
      } 
      if (requestCode == REQUEST_IMAGE_CAPTURE) { 
       Bundle extras = data.getExtras(); 
       Uri selectedImageUri = data.getData(); 
       // data.getData() gives null value 
       Bitmap imageBitmap = (Bitmap) extras.get("data"); 
       image.setImageBitmap(imageBitmap); 

      } 
} 

ответ

0

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

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