Сохранить PreviewFrame в формате JPEG на внешнем хранилище (Android)

Я пытаюсь сохранить кадры предварительного просмотра с камеры на внешнем накопителе моего устройства.

Вот разрешения в моем Манифесте:

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

И это обратный вызов внутри surfaceChanged():

  mCamera.setPreviewCallback(new PreviewCallback() {

                public void onPreviewFrame(byte[] data, Camera camera) {
                    Camera.Parameters parameters = camera.getParameters();
                  Size size = camera.getParameters().getPreviewSize();
                  frames++;
                  Log.v("Framecount", "Frame: " + frames + "Größe: " + data.length);

                  int width = parameters.getPreviewSize().width;
                  int height = parameters.getPreviewSize().height;

                  ByteArrayOutputStream outstr = new ByteArrayOutputStream();
                  Rect rect = new Rect(0, 0, width, height); 
                  YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
                  yuvimage.compressToJpeg(rect, 100, outstr);
                  Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
                  Bitmap thumbnail = Bitmap.createScaledBitmap(bmp, 20, 20, false);
                try   {
                    File sdCard = Environment.getExternalStorageDirectory();
                    File dir = new File (sdCard.getAbsolutePath() + "/.aaaaaaaaa/");
                    dir.mkdirs();
                    File file = new File(dir, "filename.jpg");
                    FileOutputStream output = new FileOutputStream(file);
                  yuvimage.compressToJpeg(rect, 90, output);
                  output.flush();
                  output.close();
                }
                catch(Exception e) {
                    Log.v("Error", "Error");
                }



                }
              });

Отображение рамок предварительного просмотра на экране не проблема, я просто не могу их сохранить. У кого-нибудь есть идеи, что может быть не так?

1 ответ

Решение

Если вы хотите, чтобы ваш jpg был сразу же виден в Галерее, вызывайте медиа-сканер для каждого нового файла. Найдите две строки кода на этом сайте.

Другие вопросы по тегам