Android CameraView запускается в низком разрешении на Samsung Galaxy S2

У меня есть FrameLayout на одном из моих экранов. Я ссылаюсь на это в своем коде следующим образом:

preview = (FrameLayout)findViewById(R.id.preview);

И я встраиваю объект CameraPreview (расширяет SurfaceView, из ZBar SDK для анализа QR) в FrameLayout следующим образом:

scanner.setConfig(0, Config.Y_DENSITY, 3);
mPreview = new CameraPreview(this, mCamera, getPreviewCallback(), autoFocusCB);
if(preview.getChildCount()>=1)
preview.removeAllViews();
preview.addView(mPreview);

Теперь, когда я запускаю это на одном из моих тестовых телефонов, Samsung Galaxy 3 (GT-I5801), все работает нормально, и QR анализируются нормально. Но если я сканирую его с помощью Samsung Galaxy S2 или Samsung Ace, приложение изначально запускается с камерой либо в низком разрешении, либо не может сфокусироваться. Кроме того, он не может автоматически настроить баланс белого, если я помещаю его на очень яркий экран. Но камера начинает работать нормально, если я перехожу с вкладки «Камера» на другую вкладку в приложении и возвращаюсь.

Любая помощь в решении этого будет принята с благодарностью. Это как-то связано с разрешением экрана или камеры? Или что-нибудь в ZBar SDK, если кто знает? Или что почти всегда так, я что-то упускаю? Еще раз спасибо, что дочитали до этого места.


person kumar    schedule 11.09.2012    source источник


Ответы (1)


Посмотрел исходники и вроде пытается запустить непрерывный автофокус, который не везде работает. И мой опыт работы с камерами Android показывает, что даже если функция рекламируется, это не означает, что она работает и пригодна для использования (один раз сгорела при настройке разрешения). При настройке камеры вы должны быть максимально защищенными и быть готовыми к проблемам.

Я разработал свое собственное управление камерой для проекта JavaOCR, и, похоже, оно работает нормально (хотя IU не может обещать, что оно будет работать везде, но вы можете привести примеры):

http://javaocr.svn.sourceforge.net/viewvc/javaocr/trunk/demos/

(если вам не нравится компилировать его самостоятельно, это приложение построено на этой библиотеке:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwyLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd )

person Konstantin Pribluda    schedule 12.09.2012