2012-06-26 1 views
2

У меня есть приложение, которое позволяет пользователю делать снимок с собственной камеры телефона, я не хочу реализовывать все функции камеры (Я не хочу потерять автофокусировку, вспышку или некоторые другие свойства, что нативная камера может иметь), поэтому я сделать этот вызов:Избегайте того, что галерея сохраняет снимок, сделанный камерой на Android.

File folder = new File(Environment.getExternalStorageDirectory(),"folder"); 
    folder.mkdirs(); 
    File nomedia = new File(folder,".nomedia"); 
    try{ 
     nomedia.createNewFile(); 
    }catch (IOException e){ 
     e.printStackTrace(); 
     Log.e("error", e.getMessage()); 
    } 

    File file = new File(folder,"image.jpeg"); 
    try { 
     file.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    imageUri = Uri.fromFile(file); 
    if(imageUri != null){ 
     Log.i(TAG, "imageUri: " + imageUri.getPath()); 
     imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
    } 

Тогда в кнопке у меня есть исполнение намерения:

startActivityForResult(imageIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

Это прекрасно работает, оно открывает камеру, я получаю обратный вызов, когда я беру пиктограмму ure, и если я посмотрю на папку с файловым проводником телефона, я вижу изображение, а также файл «.nomedia», который я создал.

Дело в том, что я не хочу, чтобы камера хранила это изображение в галерее телефона, потому что, как-то это «волшебно»;) добавлено в Галерею Android, и я подумал с добавлением «. nomedia "и создавая картинку в отдельной папке, Галерея не будет ее сканировать. Идея состоит в том, что фотографии предназначены только для внутреннего использования приложения.

Есть ли вообще избежать этого? Я действительно искал и пробовал много разных способов, но я не могу его решить.

Надеюсь, я объяснил это объяснением.

Заранее благодарен!

+0

Я знаю, что это, вероятно, не помогает. Но я столкнулся с той же проблемой некоторое время назад и должен был сдаться. Если я правильно помню, я попытался перенести изображение в приложение-частное хранилище, что помешало галерее показать его, но это также предотвратило автоматическое создание миниатюр. –

+0

попробуйте добавить период '.' к передней части папки, в которой вы храните изображение. Например, в вашем примере попробуйте переключиться на «.folder» в качестве имени вашего каталога. И какое устройство вы тестируете? – FoamyGuy

+0

Я устал, но это не помогает @Tim, я использую Galaxy S Plus, но у меня тоже такая же проблема в HTC Wildfire. – Kuu

ответ

3

Я нашел это решение: Stop saving photos using Android native camera

Идея заключается в том, чтобы проверить, какие файлы находятся в галерее непосредственно перед съемкой и только после этого, удалите это тот, который является новым.

Это не самое чистое решение, но оно работает.