Проблема с предварительным просмотром камеры? - PullRequest
0 голосов
/ 24 февраля 2010

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

Ответы [ 3 ]

1 голос
/ 26 февраля 2010

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

См. Camera.Parameters.getSupportedPreviewSizes, чтобы узнать, как запрашивать поддерживаемые разрешения и запрашивать поддерживаемое разрешение с помощью Camera.Parameters.setPreviewSize.

0 голосов
/ 12 февраля 2012

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

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {



if (isPreviewRunning) {
    camera.stopPreview();
}
try{
Camera.Parameters p = camera.getParameters();
if(p!=null){
List<Size> sizes = p.getSupportedPreviewSizes();
Size optimalSize = getOptimalPreviewSize(sizes, w, h);
p.setPreviewSize(optimalSize.width, optimalSize.height);
camera.setParameters(p);

camera.setPreviewDisplay(holder);;
camera.startPreview();

}
} catch (IOException e) {
    // TODO Auto-generated catch block


    e.printStackTrace();
}

isPreviewRunning = true;
}
private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
// TODO Auto-generated method stub
final double ASPECT_TOLERANCE = 0.05;
double targetRatio = (double) w / h;
if (sizes == null) return null;

Size optimalSize = null;
double minDiff = Double.MAX_VALUE;

int targetHeight = h;

// Try to find an size match aspect ratio and size
for (Size size : sizes) {
double ratio = (double) size.width / size.height;
if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}

// Cannot find the one match the aspect ratio, ignore the requirement
if (optimalSize == null) {
minDiff = Double.MAX_VALUE;
for (Size size : sizes) {
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
}
return optimalSize;

}

попробуйте это.

0 голосов
/ 07 июня 2011

Может быть, вам нужно отключить перезапуск камеры при вращении, исправив макет в вашей деятельности, например:

public void onCreate(Bundle savedInstanceState) {
    ...
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...