Как сохранить изображения в Android? - PullRequest
0 голосов
/ 23 марта 2012

Я очень плохо знаком с программированием на Android, и мне было интересно, как заставить приложение сделать снимок и сохранить изображение во внутреннем хранилище устройства, а не на SD-карте, потому что не у всех будет SD-карта.

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Да, вы можете попытаться сохранить изображения в полях sqlite blob. Это просто способ Java: и пусть весь мир ждет :)

Хорошей практикой является хранение всех ваших файлов, кэша и т. Д. В директории /Android/data/<package_name>/files/ на внешнем хранилище. Внешнее хранилище - это не единственные SD-карты, и вы можете получить путь и состояние внешнего хранилища с помощью вызовов Environment.getExternalStorageDirectory () и Environment.getExternalStorageState () ( ссылка ). Если вы используете API 8 или выше, вы можете использовать Context.getExternalFilesDir ().

Если вы хотите получить ненавистные лучи пользователя, вы можете попытаться сохранить файлы и папки в корне внешнего хранилища.

1 голос
/ 23 марта 2012

Вы можете попытаться сохранить его как BLOB-объект sqlite.Это это поток о том, как сделать хранилище.Сказать «не у всех будет внешнее хранилище» - плохое оправдание: вы должны разобраться в обоих случаях.Если вместо этого вы хотите реализовать его в виде файла (это очень хороший способ), вы можете найти каталог внешнего хранилища с помощью вызова Environment.getExternalStorageDir (), чтобы определить подходящий каталог для хранения ваших файлов.Прочитайте документацию API здесь и примите во внимание следующее примечание:

Примечание: не смущайтесь словом "внешний" здесь.Этот каталог лучше всего рассматривать как носитель / общее хранилище.Это файловая система, которая может содержать сравнительно большой объем данных и совместно используется всеми приложениями (не применяет разрешения).Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.

0 голосов
/ 23 марта 2012

Возможно, что-то вроде этого

 Bitmap largeBitmap ;  // save your Bitmap from data[]
 FileOutputStream fileOutputStream = null;
 BufferedOutputStream bos = null;
 int quality = 100;

 String filePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + "myImage.jpg"

 File mediaFile = new File(filePath);

 try {

      fileOutputStream = new FileOutputStream(pictureFile);
      bos = new BufferedOutputStream(fileOutputStream);
      bitmap.compress(CompressFormat.JPEG, quality, bos);

      return pictureFile;
 } finally {
      if (bos != null) {
      try {
           bos.close();
      } catch (IOException e) {
      // ignore close error
      }
 }
...