gpt4 book ai didi

android - 禁用方向更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:50 25 4
gpt4 key购买 nike

重新启动自定义相机,同时更改预览模式,从风景到肖像肖像到风景,我的 Surface 类代码如下所示:

PreviewSurface.java:-

public class PreviewSurface extends SurfaceView implements
SurfaceHolder.Callback {

public static final String LOG_TAG = "CameraPreview";
private SurfaceHolder mSurfaceHolder;

private Camera mCamera;

// Constructor that obtains context and camera
@SuppressWarnings("deprecation")
public PreviewSurface(Context context, Camera camera) {
super(context);
this.mCamera = camera;

this.mSurfaceHolder = this.getHolder();
this.mSurfaceHolder.addCallback(this);
this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.mSurfaceHolder.setFixedSize(100, 100);
}

@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
Camera.Parameters parameters = mCamera.getParameters();
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
parameters.set("orientation", "portrait");
mCamera.setDisplayOrientation(90);
parameters.setRotation(90);
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
}
else
{
// This is an undocumented although widely known feature
parameters.set("orientation", "landscape");
// For Android 2.2 and above
mCamera.setDisplayOrientation(0);
// Uncomment for Android 2.0 and above
parameters.setRotation(0);
}
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();

} catch (IOException e) {
// left blank for now
}
}

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
mCamera.stopPreview();
mCamera.release();
}

@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
int width, int height) {

try {
Camera.Parameters parameters = mCamera.getParameters();
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
parameters.set("orientation", "portrait");
mCamera.setDisplayOrientation(90);
parameters.setRotation(90);

}
else {
// This is an undocumented although widely known feature
parameters.set("orientation", "landscape");
// For Android 2.2 and above
mCamera.setDisplayOrientation(0);
// Uncomment for Android 2.0 and above
parameters.setRotation(0);
}
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();

} catch (IOException e) {
// left blank for now
}
}

}

我可以知道我哪里做错了吗,我在代码中遗漏了什么?

最佳答案

您必须处理应用的配置更改。

将此行添加到您的 AndroidManifest.xml。

android:configChanges="keyboardHidden|orientation|screenSize"

This tells the system what configuration changes you are going to handle yourself - in this case by doing nothing.

希望能帮到你

关于android - 禁用方向更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20603635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com