[英]Android throws error everytime when “Camera camera = Camera.open();” is called
我在Android中使用相機時遇到問題。
使用API 25 Nougat 7.1.1 SDK開發。 最低目標SDK設置為15。
每次調用時都會引發錯誤:
Camera camera = Camera.open();
錯誤“ RuntimeException:無法連接相機服務”,可以從我的模擬器中看到(Nexus 5X API 25 Android 7.1.1)
在REAL DEVICE(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());
}
}
}
}
確實檢測到了camara(hasCamera == true)。
我不使用Camera2(從API 21開始),因為我希望我的應用程序可以在API 15開始使用。
我在這里嘗試了許多答案,但沒有任何效果。 請指教!
如果未添加以下權限,請向您的清單文件添加以下權限。
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
重要說明:之所以發生這種情況,是因為您在第一次啟動時就打開了Camera,但之后又沒有釋放它的資源。 確保您應該這樣做
camera.stopPreview();
camera.release();
camera = null;
使用相機完成操作后,您必須執行上述清理和釋放資源的過程。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.