2010-02-24 3 views
-1

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

+0

На каких-либо конкретных устройствах? Вам удалось получить журнал от любых пользователей? –

+0

ОК, я попробую. пользователи переписывают, что изображения разбиваются в режиме potrait.they получают исключение Runtime – harish

ответ

1

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

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

0

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

public void onCreate(Bundle savedInstanceState) { 
    ... 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
} 
0

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

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; 

}

попробовать это.

Смежные вопросы