2014-02-20 3 views
0

Я пытаюсь написать приложение, которое я возьму с камеры и использую. Вначале я использовалСъемка с родной камеры без SD-карты

Bitmap image = (Bitmap) data.getExtras(). Get ("data");

Однако я заметил, что это просто вернет миниатюру изображения. Так я обновил свой код, как:

public void takePhoto(){ 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File dir = context.getDir("directory", Context.MODE_PRIVATE); 
    File photo = new File(dir, "Pic.jpg"); 
    mImageUri = Uri.fromFile(photo); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 
    startActivityForResult(intent, 0); 

} 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == 0){ 
     if(Activity.RESULT_OK == resultCode){ 
      Uri selectedImage = mImageUri; 
      getContentResolver().notifyChange(selectedImage, null); 
      ContentResolver cr = getContentResolver(); 
      Bitmap bitmap; 
      try { 
       bitmap=android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage); 
       displayIV.setImageBitmap(bitmap); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } 

     } 

    } 
} 

Проблема после обновления кода он перестал называть onActivityResult функции после того, как я закончу с фото. После съемки фотографии я нажимаю кнопку DONE на экране камеры, но она не вызывает приложение обратно. Приложение остается на экране камеры.

Любая идея, что я делаю неправильно?

+0

Нажмите кнопку BACK. Не требуется, чтобы приложение камеры немедленно возвращало управление вашему приложению. – CommonsWare

+0

Кнопка BACK просто отменяет камеру. Он не вызывает функцию onActivityResult, где я буду использовать изображение, которое я взял, а также кнопка DONE вызывала приложение назад, когда я читал миниатюру из данных. –

+0

Попробуйте использовать файл, который приложение для камеры может записать, так как оно не может быть записано в ваше запрошенное местоположение. Например, используйте 'getExternalFilesDir()' или 'getExternalCacheDir()'. Возможно, приложение камеры, которое вы используете, не вызывает вызов 'setResult()', если он не может записать изображение, которое вы запросили, и 'setResult()' - это то, что запускает 'onActivityResult()' в вашей деятельности. – CommonsWare

ответ

0

Внешние права на запись для хранения должны быть добавлены в манифест.

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