Android хвърля грешка всеки път, когато Camera camera = Camera.open(); е наречен

Имам проблем с използването на камерата в Android.

Разработване на API 25 Nougat 7.1.1 SDK. Минималният целеви SDK е зададен на 15.

Извежда грешка всеки път при извикване:

Camera camera = Camera.open();

с грешката „RuntimeException: Fail to connect to camera service“, която може да се види от моя емулатор (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 нататък.

Опитах много отговори тук, но нищо не работи. Моля за съвет!


person ikevin8me    schedule 03.05.2017    source източник
comment
stackoverflow.com/questions/23904459/   -  person Shayan Pourvatan    schedule 03.05.2017
comment
Проблем с разрешението?   -  person GhostCat    schedule 03.05.2017
comment
Опитайте да рестартирате устройството. Обикновено виждам това, когато някое приложение придобие камерата и не я пусне.   -  person CommonsWare    schedule 03.05.2017
comment
Бихте ли могли да публикувате проследяване на стека на грешката, което ще помогне по-добре при намирането на решение на вашия проблем.   -  person Isaac Osiemo    schedule 03.05.2017
comment
Възможен дубликат на android java lang runtimeexception fail to connect to camera услуга   -  person Michael    schedule 03.05.2017


Отговори (1)


Моля, добавете следните разрешения към файла на манифеста, ако не са добавени.

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

Важна забележка: Това се случва, защото сте отворили Камера при първото стартиране и след това не сте освободили нейните ресурси. уверете се, че трябва да направите това

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

Трябва да извършите горния процес на почистване и освобождаване на ресурси, когато приключите с използването на камерата.

Надявам се това да помогне.

person MobileEvangelist    schedule 03.05.2017