Сохранение картинки в память - PullRequest
0 голосов
/ 27 ноября 2011

Мне нужно использовать камеру устройства, чтобы сделать снимок, сохранить его в своей памяти и получить URI, чтобы потом отправить его по электронной почте.

Я использую Android 3.2 на устройстве без карты памяти (всего 11 гигабайт встроенной памяти).

    private void takePicture(){
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, 1);
}

public void onActivityResult(int requestCode, int resultCode, Intent data){
       if(requestCode == CAMERA_PIC_REQUEST && resultCode == Activity.RESULT_OK){
           picture = (Bitmap) data.getExtras().get("data");
           pictureView.setImageBitmap(picture);

           ContentValues values = new ContentValues();
           values.put(Images.Media.TITLE, "Picture");
           values.put(Images.Media.BUCKET_ID, "picture_ID");
           values.put(Images.Media.DESCRIPTION, "");
           values.put(Images.Media.MIME_TYPE, "image/jpeg");

           pictureUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
           OutputStream outstream;

           try{
               outstream = getContentResolver().openOutputStream(pictureUri);
               picture.compress(Bitmap.CompressFormat.JPEG, 100, outstream);
               outstream.close();
           }catch(FileNotFoundException e){

           } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       }
   }

Любая помощь от кого-то более опытного с этим будет принята с благодарностью.

1 Ответ

0 голосов
/ 28 ноября 2011

Чтобы сохранить что-то в памяти, вы просто объявляете переменную или структуру данных для ее хранения; в этом случае некоторая форма массива байтов кажется многообещающей. Я не думаю, что это будет работать очень хорошо в этом случае, хотя. Куча в Android обычно ограничена 16 или 25 мегабайтами, и в зависимости от того, что еще делает ваше приложение, сохраняя фотографии, вы быстро получите исключение «Недостаточно памяти».

Таким образом, без SD-карты, это оставляет вас для записи во внутреннюю память. Я не знаю, какие каталоги на внутреннем хранилище, если таковые имеются, приложение может записывать без рут-доступа и / или монтирования системы чтения / записи, но я думаю, что лучшим выбором будет / data / tmp. Посмотри, сможешь ли ты сохранить картинку там. Если нет, то монтирование системы для чтения / записи тоже не так уж плохо.

...