Android Camera Application, предварительный просмотр сбоев - PullRequest
0 голосов
/ 25 ноября 2010

Итак, я начал с этой небольшой статьи. Я хотел попробовать сделать приложение, которое будет делать снимки во время работы в фоновом режиме. Для начала я хотел, чтобы приложение, которое когда-то открывалось, просто делало снимок каждые X секунд. После воссоздания классов и методов, показанных в проходе ниже, я столкнулся с несколькими проблемами.

http://itp.nyu.edu/~sve204/mobilemedia_spring10/androidCamera101.pdf

Для начала кажется, что функция onCreate устанавливает все объекты для приложения, но если вы пытаетесь сделать снимок любым другим методом, кроме onClick (IE вызывает его напрямую), приложение фактически не настроило холст или предварительный просмотр еще.

Мой первый вопрос: Есть ли какой-нибудь условный метод, который вы можете настроить, который будет ожидать, пока все объекты "onCreate" не будут созданы и их соответствующие методы не будут вызваны и завершены? Как подождать, пока приложение завершит сборку поверхности и запуск предварительного просмотра камер, прежде чем автоматически начинать делать снимки?

Мой второй вопрос: Я должен иметь предварительный просмотр, чтобы сделать снимки. Есть ли способ отодвинуть это приложение назад (IE работает в фоновом режиме), продолжая снимать? Требуется ли рисование на холсте? (Из того, что я могу сказать AFAIK, вы должны иметь держатель поверхности для запуска предварительного просмотра, когда вы открываете другой экран или приложение, которое приостанавливает текущее приложение и закрывает поверхность / холст, на котором вы представляли этот предварительный просмотр). Если мое понимание правильного во всем этом, лучшее, что я смогу сделать, это сделать холст размером 1x1 пиксель, который все равно будет занимать экран из-за того, что приложение находится на переднем плане.

Мой третий вопрос: есть ли способ обойти это? Можете ли вы по-прежнему использовать камеру, не требуя предварительного просмотра?

1 Ответ

0 голосов
/ 25 ноября 2010
  1. Вы должны реализовать SurfaceHolder.Callback и дождаться, пока будет вызван его surfaceCreated().

    После этого вы можете выполнить всю подготовку MediaRecorder (setPreviewDisplay, setAudio, setVideo,prepare ()).

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

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