Android - Захват фото

В моем приложении мне нужно реализовать собственную активность камеры, когда мне нужно запустить камеру и сделать снимок.

В деталях, мое приложение, содержащее One TextView (вверху) для отображения имени активности и одной кнопки (внизу) и в средней области экрана, просмотр камеры следует просматривать. Когда пользователь нажимает на эту кнопку, следует щелкнуть Snaps и отобразить ее в Imageview другой деятельности.

Я знаю, что используется следующий подход:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, 0 );

Но этот подход, если я использовал, тогда мое текстовое представление и представление кнопки не отображаются.

(Заметьте, что: я использую Android SDK 1.5 с HTC Hero)

Помогите мне по предложению любой статьи, сайта или PDF.

thanx, paresh

Ответ 1

Если вы пытаетесь использовать встроенную камеру, после вызова собственной камеры она будет контролировать ваше представление. Однако, если вы хотите реализовать свою собственную камеру, такой макет будет возможен. Несколько хороших примеров можно найти здесь:

Гудлак!

Ответ 2

Все инструкции находятся на JavaDoc android.hardware.Camera at http://developer.android.com/reference/android/hardware/Camera.html:

  • Получить экземпляр Camera from open().
  • Получить существующие (по умолчанию) настройки с помощью getParameters().
  • При необходимости измените возвращаемый объект Camera.Parameters и вызовите setParameters (Camera.Parameters).
  • При желании вызовите setDisplayOrientation (int).
  • Важно: передать полностью инициализированный SurfaceHolder в setPreviewDisplay (SurfaceHolder). Без поверхности камера не сможет запустить предварительный просмотр.
  • Важно: вызвать startPreview(), чтобы начать обновление поверхности предварительного просмотра. Прежде чем делать снимок, необходимо запустить предварительный просмотр.
  • Если вы хотите, вызовите takePicture (Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback, Camera.PictureCallback), чтобы сделать снимок. Подождите, пока обратные вызовы будут предоставлять фактические данные изображения.
  • После съемки снимет экран предварительного просмотра. Чтобы сделать больше фотографий, сначала вызовите startPreview().
  • Вызов stopPreview(), чтобы остановить обновление поверхности предварительного просмотра.
  • Важно: Вызов() для освобождения камеры для использования другими приложениями. Приложения должны немедленно отпустить камеру в onPause() (и снова открыть() в onResume()).

    SurfaceHolder обычно реализуется с использованием SurfaceView