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

Я создаю приложение для 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 , а затем /data/data/app_package_structure/files/file_name.jpg тост, чтобы сообщить пользователю, что их изображение имеет Был сохранен.

Любая помощь высоко ценится 🙂

Я думаю, что 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 . 🙂

Ниже приведен пример приложения, которое обрабатывает часть «take-a-picture-and-save-it». Автофокус, клики, Toast и сохранение в локальном хранилище файлов файлов и SD-карта остаются в качестве упражнений для ученика. 🙂