gpt4 book ai didi

android - Camera Preview 需要一些时间来重新绘制 Orientation Change

转载 作者:行者123 更新时间:2023-11-30 03:08:52 25 4
gpt4 key购买 nike

我正在开发自定义相机 Android 应用程序。它在预览屏幕上运行良好,在纵向和横向模式下都非常适合屏幕尺寸。但是,在更改手机方向时,预览重绘会出现明显的延迟。在论坛中搜索时,我发现其他人在处理电话方向更改时也看到了类似的问题。遵循一些避免 Activity 被销毁和重新创建以及相机在此类更改期间被释放和打开的建议,我在 AndroidManifest.xml 中添加了以下行:

        android:configChanges="orientation|screenSize">

通过一些调试和测试,我可以确认 Activity 不再在方向更改时被销毁/创建。然而,即使添加了此功能,当预览从纵向重绘到横向时,仍然存在明显的延迟,反之亦然。以下是 Activity 类中 onConfigurationChanged 方法的代码:

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mPreview.setCameraDisplayOrientation(this, 1, mCamera);
}

在 SurfaceView 类中:

public void setCameraDisplayOrientation(Activity activity,
int cameraId, android.hardware.Camera camera) {

android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}

int result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
camera.setDisplayOrientation(result);
}

在 surfaceChanged 中,我有:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
initialisePreview(w, h); // gets best preview size and sets camera parameters
mCamera.startPreview();
}

上面的setCameraDisplayOrientation 方法并没有什么新的,改编自Android Developer 网站。我不确定还有什么可能导致重绘延迟。如果有人有任何想法,请指教。谢谢。

最佳答案

我没有像上面描述的那样处理屏幕方向变化,而是让 Activity 忽略在 onCreate() 期间由方向传感器确定的方向变化,使用:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

通过此更改,当手机方向发生变化时,预览会继续无缝进行。这似乎违反直觉,但它解决了我的问题。希望对某人有所帮助。

关于android - Camera Preview 需要一些时间来重新绘制 Orientation Change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323671/

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