Как захватить изображение и сохранить его с помощью встроенной камеры Android

У меня возникла проблема с захватом изображения и его сохранением из собственного приложения для камеры. Вот пример моего кода.

_path = Environment.getExternalStorageDirectory() + "make_machine_example.jpg"; File file = new File( _path ); Uri outputFileUri = Uri.fromFile( file ); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri ); startActivityForResult( intent, 0 ); 

После того, как фотография была сделана, и я вернусь обратно к своей первоначальной деятельности. Когда я перехожу на свою SD-карту через Android DDMS File Explorer, изображения там нет. Кто-нибудь знает, почему это не спасается?

Вы проверили, какой результат для среды Environment.getExternalStorageDirectory (), потому что если он не содержит трейлинг-файла (/), то ваше изображение окажется в каталоге, который не находится на SD-карте, например:

  /mnt/sdcardmake_machine_example.jpg 

Когда вы действительно хотите:

  /mnt/sdcard/make_machine_example.jpg 

Вместо этого попробуйте использовать этот код:

  _path = Environment.getExternalStorageDirectory() + File.separator + "make_machine_example.jpg"; 

Здесь был конечный продукт, если кто-то еще посещает эту тему:

 public class CameraCapture extends Activity { protected boolean _taken = true; File sdImageMainDirectory; protected static final String PHOTO_TAKEN = "photo_taken"; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); File root = new File(Environment .getExternalStorageDirectory() + File.separator + "myDir" + File.separator); root.mkdirs(); sdImageMainDirectory = new File(root, "myPicName"); startCameraActivity(); } } catch (Exception e) { finish(); Toast.makeText(this, "Error occured. Please try again later.", Toast.LENGTH_SHORT).show(); } } protected void startCameraActivity() { Uri outputFileUri = Uri.fromFile(sdImageMainDirectory); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case 0: finish(); break; case -1: try { StoreImage(this, Uri.parse(data.toURI()), sdImageMainDirectory); } catch (Exception e) { e.printStackTrace(); } finish(); startActivity(new Intent(CameraCapture.this, Home.class)); } } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.getBoolean(CameraCapture.PHOTO_TAKEN)) { _taken = true; } } @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean(CameraCapture.PHOTO_TAKEN, _taken); } public static void StoreImage(Context mContext, Uri imageLoc, File imageDir) { Bitmap bm = null; try { bm = Media.getBitmap(mContext.getContentResolver(), imageLoc); FileOutputStream out = new FileOutputStream(imageDir); bm.compress(Bitmap.CompressFormat.JPEG, 100, out); bm.recycle(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } 

1. Просто используйте

 new File(Environment.getExternalStorageDirectory(), "make_machine_example.jpg"); 

и не беспокойтесь о сепараторах.

2. Столкнулась с той же проблемой. Телефоны SenseUI имеют собственное приложение камеры, которое не создает файл. Какое устройство вы используете? Возможно, он уже исправлен на последних устройствах, но он также может быть проблемой. Итак, вот полный пример, как его преодолеть. Проблемы с сохранением фотографии в файл .

После сохранения изображения после сканирования изображения

  sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

Добавьте эту строку в файл AndroidManifest.xml и удалите расширение make_machine_example:

Он начнет снимать Фото и хранить в SD-карте.

  • Android-камера: намерение данных возвращает null
  • как установить ориентацию изображения камеры?
  • Android-камера android.hardware.Camera устарела
  • Активность kill / onCreate вызвана после съемки с помощью намерения
  • Управление камерой для съемки в портрете не приводит к повороту окончательных изображений
  • Давайте будем гением компьютера.