我有这个代码用于创建相机预览以扫描QR码但不起作用:
try {
c = ((Class<? extends Controllo>) getIntent().getExtras().get("ctrl")).newInstance();
} catch (Exception e) {
Log.w("Error", e.toString());
throw new RuntimeException(e.getMessage());
}
autoFocusHandler = new Handler();
mCamera = getCameraInstance();
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
FrameLayout preview = (FrameLayout)findViewById(com.x720.qrscanner.R.id.cameraPreview);
Camera.Parameters parameters = mCamera.getParameters();
Boolean trovatoParam = false;
int minValWidth = 0;
int minValHeight = 0;
for (Camera.Size previewSize: mCamera.getParameters().getSupportedPreviewSizes())
{
Log.e("SIZE", previewSize.width+" - " +previewSize.height);
Log.e("SCHERMO", size.y+" - "+size.x);
if(previewSize.width > minValWidth && previewSize.height > minValHeight && previewSize.width <= size.y && previewSize.height <= size.x) {
parameters.setPreviewSize(previewSize.width, previewSize.height);
Log.e("-------------SELEZIONO", previewSize.width+"");
trovatoParam = true;
minValWidth = previewSize.width;
minValHeight = previewSize.height;
}
}
if(trovatoParam == true)
mCamera.setParameters(parameters);
/* Instance barcode scanner */
scanner = new ImageScanner();
scanner.setConfig(0, Config.X_DENSITY, 3);
scanner.setConfig(0, Config.Y_DENSITY, 3);
scanner.setConfig(0, Config.ENABLE, 0);
// only enable QRCODE
scanner.setConfig(Symbol.QRCODE, Config.ENABLE, 1);
mPreview = new CameraPreview(this, mCamera, previewCb, autoFocusCB);
preview.addView(mPreview);
这就得到了相机:
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open();
} catch (Exception e){
}
return c;
}
我的问题是相机预览没有填满屏幕,但我有一个很大的顶部边框。我正在使用星系s8 +。 对不起英文不好
答案 0 :(得分:0)
1)如果你的容器的宽度和高度与父母一样,它肯定会填满整个屏幕。 检查framelayout是否在任何其他布局内?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
2)如果您在框架布局之外使用相对布局,请将其更改为线性布局
3)或者只是尝试使用 SurfaceView 而不是 FrameLayout 。
请检查并告诉我..最好的运气..