Встроить камеру без устаревших методов и обратной поддержки

Я хочу создать приложение, в котором передняя камера устройства используется для проецирования текущего изображения на SurfaceView. Все учебные пособия, которые я нашел до сих пор, реализуют это с помощью объекта Camera из пакета android.hardware.

Однако этот метод кажется устаревшим. При пробе «нового» предпочтительного способа реализации этой функции после Android документации, я получаю предупреждение, что его можно использовать только с уровнем API 21, что довольно бесполезно.

Поэтому я хотел бы знать, какой в ​​настоящее время предпочтительный способ реализации функций камеры в приложении. Или может быть какая-то библиотека поддержки для уровней API ниже 21?

Заранее спасибо.


person TmKVU    schedule 22.11.2014    source источник


Ответы (2)


Устаревший интерфейс не означает, что вы не должны его использовать. Это означает, что вы должны знать, что в будущем он будет постепенно сокращаться.

Как правило, по возможности лучше использовать более новый интерфейс, чтобы избежать необходимости обновлять программное обеспечение позже.

Тот факт, что уровень API 21 еще не имеет достаточно большой доли рынка, означает, что вам, вероятно, лучше сейчас использовать старый интерфейс, и имейте в виду, что через год или два вам может потребоваться обновить реализацию.

person Photon    schedule 24.11.2014
comment
Нет ли библиотеки обратной поддержки? Как, например, ActionBar - person TmKVU; 24.11.2014
comment
На это не похоже, но я пытался сформулировать более общую мысль. Обычно, когда создается новый интерфейс, требующий новой версии ОС, вы не получаете такой роскоши. Но я бы не стал слишком об этом беспокоиться. Я предполагаю, что еще долго будут приложения, использующие старый интерфейс. - person Photon; 25.11.2014
comment
Не совсем тот ответ, на который я надеялся, но, думаю, другого выхода нет. Спасибо, в любом случае. Когда не будет других ответов с лучшим решением, я приму ответ. - person TmKVU; 25.11.2014

Я думаю, вы можете реализовать функцию камеры в обоих наборах API и сначала проверить версию сборки устройства, а затем решить, какую именно реализацию.

eg:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
      openCameraNewAPI();
}else{
      openCameraOldAPI();
}
person qianlv    schedule 15.03.2015
comment
Новая камера такая же, за исключением ссылки на класс camera2? - person portfoliobuilder; 12.09.2015
comment
Вы можете разместить эти методы - person EminenT; 30.06.2016