У меня есть 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, если кто знает? Или что почти всегда так, я что-то упускаю? Еще раз спасибо, что дочитали до этого места.