Возьмите и сохраните изображение при нажатии кнопки

Я создаю приложение для Android, которое использует захваченные пользователем изображения как часть более крупного процесса. Пока мой XML-макет имеет SurfaceView и Button внутри RelativeLayout. Мне удалось получить предварительный просмотр камеры на SurfaceView, но я застрял на том, как сделать снимок и сохранить его, когда пользователь нажимает кнопку.

Мой файл класса выглядит примерно как демонстрационная версия CameraPreview API: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

В идеале, когда нажата кнопка, камера должна автофокусироваться, щелкнуть снимок (с помощью щекотливого звука), сохранить его до /data/data/app_package_structure/files/file_name.jpg, а затем вскрыть тост, чтобы сообщить пользователю, что их изображение сохранено.

Любая помощь очень ценится:)

Ответ 1

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

В вашем коде управления нажатием кнопки, я считаю, вы должны позвонить (возможно, путем передачи сообщений)

camera.autoFocus(new Camera.AutoFocusCallback() {
  Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {
    public void onShutter() {
      // Play your sound here.
    }
  };
  public void onAutoFocus(boolean success, Camera camera) {
    camera.takePicture(shutterCallback, null, photoCallback);
  }
});  

где camera - ваш объект камеры, а photoCallback совпадает с примером CommonsWare.

Что именно вы застряли?

О, и не забудьте добавить тег <uses-feature> android.hardware.camera.autofocus.:)

Ответ 2

Вот пример приложения, в котором обрабатывается часть "Take-a-picture-and-save-it". Автофокусировка, щелчок, Toast и сохранение в локальном хранилище файлов файлов и SD-карта остаются в качестве упражнений для ученика.: -)