簡體   English   中英

每當調用“ Camera camera = Camera.open();”時,Android都會引發錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM