Сохранение изображения с камеры в файл, файл не создан - PullRequest
1 голос
/ 03 апреля 2012

В моем приложении мне нужно сохранить изображение с камеры, когда пользователь нажимает на изображение с камеры. Пока все хорошо, я следовал официальному руководству: http://developer.android.com/guide/topics/media/camera.html и все работает отлично, за исключением случаев, когда я пытаюсь сохранить изображение в обратном вызове. Действительно, я не получаю ошибки в блоке try / catch, но мой файл нигде не найден.

Я добавил правильные разрешения в манифесте:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

В моем обратном вызове у меня есть:

  private PictureCallback mPicture = new PictureCallback() 
    {
        public void onPictureTaken(byte[] data, Camera camera) 
        {
            Log.d("tag", "Je rentre bien dans la callback");

            //File pictureFile = media.getOutputMediaFile( MediaFile.MEDIA_TYPE_IMAGE );
            File pictureFile =  new File( Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_PICTURES), "temp.png");


            if (pictureFile == null)
            {
                Log.d("tag", "Error creating media file, check storage permissions ");
                return;
                }

            try 
            {
                FileOutputStream fos = new FileOutputStream( pictureFile );
                Log.d("tag", "Fichier créer : " + pictureFile.getAbsolutePath() );
                fos.write(data);
                fos.close();
            } 
            catch (FileNotFoundException e) 
            {
                Log.d("tag", "File not found " + pictureFile.getAbsolutePath() 
                        + " Readable : " + pictureFile.canRead()
                        + " Writeable : " + pictureFile.canWrite()
                        + " Exist : " + pictureFile.exists() );
            }
            catch (IOException e) 
            {
                Log.d("tag", "Error accessing file");
            }
        }   

Мой лог-файл показывает мое это:

    04-03 10:29:28.950: D/tag(15087): Je rentre bien dans la callback
    04-03 10:29:28.960: D/tag(15087): Fichier créer : /mnt/sdcard/Pictures/temp.png

Я проверяю sdcard в планшете, но, как я уже сказал, файл нигде не найден. Я исследую свою проблему, но пока не нашел ничего полезного. Я не вижу, что не так с моим кодом или чего не хватает.

Я надеюсь, что кто-то здесь может мне помочь.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

вы можете попробовать вот так

System.gc();
String fileName = System.currentTimeMillis()+".jpg"; //you can give any name to your image file
String mPathImage = Environment.getExternalStorageDirectory()+ "/" + fileName;
File file = new File(mPathImage);
Uri outputFileUri = Uri.fromFile( file );
Intent mIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mIntent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult(mIntent, 1);
0 голосов
/ 03 апреля 2012

Попробуйте это.

    File path = new File(Environment.getExternalStorageDirectory()+ getResources().getString(R.string.QRCode_Path));
    path.mkdirs();

Главное - path.mkdirs();, папка будет создана, даже если она не создана, и файл будет сохранен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...