【发布时间】:2020-08-15 11:42:42
【问题描述】:
即使我将 AspectRatio 从 AspectRatio.RATIO_16_9 更改为 AspectRatio.RATIO_4_3,PreviewView 也会缩小到屏幕的一半!!
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
previewView = view.findViewById(R.id.preview_view);
setCameraProviderListener();
}
private void setCameraProviderListener() {
ListenableFuture<ProcessCameraProvider> cameraProviderFuture =
ProcessCameraProvider.getInstance(requireContext());
cameraProviderFuture.addListener(() -> {
try {
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (ExecutionException | InterruptedException e) {
// No errors need to be handled for this Future
// This should never be reached
e.printStackTrace();
}
}, ContextCompat.getMainExecutor(requireContext()));
}
private void bindPreview(ProcessCameraProvider cameraProvider) {
previewView.setPreferredImplementationMode(PreviewView.ImplementationMode.SURFACE_VIEW);
Preview preview = new Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_4_3).
setTargetRotation(previewView.getDisplay().getRotation())
.build();
CameraSelector cameraSelector =
new CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build();
preview.setSurfaceProvider(previewView.createSurfaceProvider());
cameraProvider.bindToLifecycle(this, cameraSelector,preview);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.camera.view.PreviewView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Yellow"
android:layout_gravity="center" />
</LinearLayout>
这是我遇到这个问题 2 个月的代码!
PreviewView 包裹在 LinearLayout 中,黄色作为 background 颜色,但是当相机启动时,它仅显示在 PreviewView 的上半部分,而 PreviewView 变为黑色。
【问题讨论】:
-
您能否分享有关您的布局外观以及如何更改纵横比的代码。此外,这种情况会发生在许多设备上,还是仅在特定设备上发生?
-
我通过上面的代码和布局改变了纵横比,它是如此简单的
LinearLayout,里面有PreviewView -
是的,它发生在许多模拟器设备和不同的 android 版本上
-
也许您可以“按原样”在 GitHub 上分享您的项目,因为这对我来说都是正确的,并且非常相似的代码在我的设备上显示全屏预览。另外,请披露您正在测试的设备:某些手机可能存在奇怪的错误,CameraX 目前仅支持所有数千种现有设备型号中的约 90%。
-
我在各种设备上进行了测试,例如 Pixel 3、Pixel 3 XL、Nexus 5X(模拟器)和 S7 真机都显示相同的东西
标签: android camera android-camera preview android-camerax