我正在将此camera preview应用程序用于我的Android应用程序。
我希望在整个屏幕上预览相机。我使用Android API中的示例尝试将预览设置为全屏。这就是我尝试这样做的方式:
if (!cameraConfigured) {
Camera.Parameters parameters=camera.getParameters();
Camera.Size size = getOptimalPreviewSize(mSupportedPreviewSizes, width, height);
if (size != null) {
parameters.setPreviewSize(size.width, size.height);
camera.setParameters(parameters);
cameraConfigured=true;
}
我使用相对布局作为我的布局。我的布局设置如下:
<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
我仍无法在整个屏幕上预览相机。我想知道如何预览整个屏幕。
答案 0 :(得分:3)
我发现了问题。我将以下设置添加到Android清单文件
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" android:xlargeScreens="true"/>
我可以全屏查看相机。
答案 1 :(得分:0)
首先,获取显示宽度和高度:
int dw = currentDisplay.getWidth(); // dw == display width
int dh = currentDisplay.getHeight(); // dh == display height
然后循环浏览支持的预览尺寸,并选择最大的一个,如果 (size.width&lt; = dw&amp;&amp; size.height&lt; = dh)。当你点击这个if语句时 失败,使用以前的值(你可以设置类似prevWidth和prevHeight 作为一个快速/简单的方法退后一个...只记得设置每个后 你测试它们;在您点击大于屏幕尺寸的预览尺寸后,只需 打破了循环。
后来,
--Jim
答案 2 :(得分:0)
我假设您的代码位于扩展SurfaceView的类中,并且您将将surfaceView放置在与显示一样大的FrameLayout中。
您在代码中没有做的是将SurfaceView设置为与显示相同的尺寸,在下面的代码块中,通过获取布局,设置宽度和高度来完成。
我使用以下代码拉伸到屏幕的尺寸:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
...
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
...
final DisplayMetrics dm = this.getResources().getDisplayMetrics();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(cameraSize.width, cameraSize.height);
mCamera.setParameters(parameters);
//Here you get the SurfaceView layout and subsequently set its width and height
FrameLayout.LayoutParams frameParams = (FrameLayout.LayoutParams) this.getLayoutParams();
frameParams.width = LayoutParams.MATCH_PARENT;// dm.widthPixels should also work
frameParams.height = LayoutParams.MATCH_PARENT;//dm.heightPixels should also work
this.setLayoutParams(frameParams);
//And we should have things set now...
....
}
...
}
我希望这会有所帮助。要整合的关键部分是那些内部评论
答案 3 :(得分:0)
获取屏幕尺寸
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
使用此宽度和高度来获取预览尺寸。