gpt4 book ai didi

java - 每次调用 "Camera camera = Camera.open();"时 Android 都会抛出错误

转载 作者:行者123 更新时间:2023-12-02 13:16:17 29 4
gpt4 key购买 nike

我在 Android 中使用相机时遇到问题。

在 API 25 Nougat 7.1.1 SDK 上进行开发。最小目标 SDK 设置为 15。

每次调用时都会抛出错误:

Camera camera = Camera.open();

出现错误“RuntimeException:无法连接到相机服务”,可以从我的模拟器(Nexus 5X API 25 Android 7.1.1)中看到该错误

在真实设备 (Android 5.1.1) 上进行测试,相机功能也不起作用 - 完全相同的问题。

这是代码:

import android.hardware.Camera;

...

boolean hasCamera = false;

private boolean hasCamera(Context context) {
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...

hasCamera = hasCamera(this);
if(!hasCamera) {
takePhotoButton.setText("No Camera Found");
takePhotoButton.setEnabled(false);
}
}

private class TakePhotoButtonListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if(hasCamera) {
try {
Camera camera = Camera.open();
camera.startPreview();
camera.takePicture(
null,
null,
new CameraPictureCallbackJPEG());
} catch (Exception e) {
Log.i("Error", e.getMessage());
}
}
}
}

确实检测到相机(hasCamera == true)。

我不再使用 Camera2(从 API 21 开始),因为我希望我的应用程序可以在 API 15 以后的版本上运行。

我在这里尝试了很多答案,但没有任何效果。请指教!

最佳答案

如果未添加以下权限,请添加到您的 list 文件中。

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />

重要说明:发生这种情况是因为您在第一次启动时打开了相机,之后您还没有释放它的资源。确保你应该这样做

camera.stopPreview();
camera.release();
camera = null;

当你使用完相机后,你必须执行上述清理和释放资源的过程。

希望这有帮助。

关于java - 每次调用 "Camera camera = Camera.open();"时 Android 都会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759794/

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