2013-10-14 2 views
1

Я пытаюсь создать приложение, которое позволит пользователю сделать снимок, затем отобразить его в приложении и сохранить его.Попытка отобразить изображение в моем приложении, которое было снято с помощью встроенного приложения для камеры.

Я использую следующий код, чтобы сделать снимок (от Google)

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(takePictureIntent, 1); 

Как я могу сказать, когда пользователь нажимает на кнопку назад и вернуться в мое приложение, так что я могу отобразить изображение ?? ?

+0

возможно дубликат [Захват изображения с камеры и дисплея в деятельности] (http://stackoverflow.com/questions/5991319/capture-image-from-camera -and-display-in-activity) – Shubhank

+0

Если вы следуете руководству Google, то он сообщает вам, что делать, вам нужно переопределить 'onActivityResult' , когда пользователь вернется в ваше приложение, и вы получите там вы получаете изображение из – tyczj

ответ

0

Вы сделали startActivityForResult в одной и той же деятельности

you need to call 
onActivityResult(int requestcode, int resultCode, Intent data){ 
if(resultCode==RESULT_OK){ 

if(requestCode==1){ 

    // get your data from the intent 
    } 
    } 

} 
0

Сфотографируйте этот код ...

File pictureFileDir = getDir(); 
           if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) { 

            Log.d("Photo Take", "Can't create directory to save image."); 
            Toast.makeText(PhotoTake.this , "Can't create directory to save image.", 
              Toast.LENGTH_LONG).show(); 
            return; 
           } 

           SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss"); 
           String date = dateFormat.format(new Date()); 
           String photoFile = "Picture_" + date + ".jpg"; 
           String filepath = pictureFileDir.getPath() + File.separator; 
           File imageFile = new File(filepath , photoFile); 

           ContentValues image = new ContentValues(); 

           image.put(Images.Media.TITLE, photoFile); 
           image.put(Images.Media.DISPLAY_NAME, photoFile); 
           image.put(Images.Media.DESCRIPTION, "Accident data Accachment " + date); 
           image.put(Images.Media.DATE_ADDED, date); 
           image.put(Images.Media.DATE_TAKEN, date); 
           image.put(Images.Media.DATE_MODIFIED, date); 
           image.put(Images.Media.MIME_TYPE, "image/jpeg"); 
           image.put(Images.Media.ORIENTATION, 0); 

           File parent = imageFile.getParentFile(); 
           String path = parent.toString().toLowerCase(); 
           String name = parent.getName().toLowerCase(); 
           image.put(Images.ImageColumns.BUCKET_ID, path.hashCode()); 
           image.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name); 
           image.put(Images.Media.SIZE, imageFile.length()); 

           image.put(Images.Media.DATA, imageFile.getAbsolutePath()); 

           mCapturedImageURI = PhotoTake.this.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, image); 


           Intent intent = new Intent(
             MediaStore.ACTION_IMAGE_CAPTURE); 
           intent.putExtra(MediaStore.EXTRA_OUTPUT, 
             mCapturedImageURI); 

           startActivityForResult(intent, req); 

Теперь получить его в onActivityResult ...

if (requestCode == 100 && resultCode == Activity.RESULT_OK) { 
      if (mCapturedImageURI != null) { 
       img1.setImageBitmap(getScaledBitmap(mCapturedImageURI));; 

       System.out.println("Onactivity Result uri = " + mCapturedImageURI.toString()); 
      } else { 
       Toast.makeText(PhotoTake.this, "Error getting Image", 
         Toast.LENGTH_SHORT).show(); 
      } 

     } 

Вам потребуется этот метод, чтобы избежать OutOfMemory Exception

private Bitmap getScaledBitmap(Uri uri){ 
     Bitmap thumb = null ; 
     try { 
      ContentResolver cr = getContentResolver(); 
      InputStream in = cr.openInputStream(uri); 
      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize=8; 
      thumb = BitmapFactory.decodeStream(in,null,options); 
     } catch (FileNotFoundException e) { 
      Toast.makeText(PhotoTake.this , "File not found" , Toast.LENGTH_SHORT).show(); 
     } 
     return thumb ; 
    } 

Надеюсь, что это поможет.

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