Ошибка Android: не подключите к службе камеры на камере.open ()?

StackOverflow https://stackoverflow.com/questions/6824457

  •  26-10-2019
  •  | 
  •  

Вопрос

Телефон: HTC невероятно 2 с Gingerbread 2.3.3

В моем коде я делаю:

cam = Camera.open(0);
SurfaceHolder surfaceHolder = getSurfaceHolder();
try
{
    cam.setPreviewDisplay(surfaceHolder);
    cam.startPreview();
}
catch (IOException e)
{
    e.printStackTrace();
}

В конструкторе двигателя

У меня тоже есть:

@Override
public void onDestroy()
{
    super.onDestroy();
    if (cam != null)
    {
        cam.stopPreview();
        cam.setPreviewCallback(null);
        cam.release();
        cam = null;
    }
}

а также

@Override
public void onSurfaceDestroyed(SurfaceHolder holder)
{
    super.onSurfaceDestroyed(holder);
    if (cam != null)
    {
        cam.stopPreview();
        cam.setPreviewCallback(null);
        cam.release();
        cam = null;
    }
}

Мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.google.apis" android:versionCode="1"
    android:versionName="1.0">

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

    <uses-feature android:name="android.software.live_wallpaper" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <service android:label="@string/label"
            android:name="com.me.app.main.AppName"
            android:permission="android.permission.BIND_WALLPAPER">
            <intent-filter>
                <action android:name="android.service.wallpaper.WallpaperService" />
            </intent-filter>
            <meta-data android:name="android.service.wallpaper"
                android:resource="@xml/app" />
        </service>
        <activity
            android:name="com.me.app.main.AppName"
            android:label="@string/app_name">
            android:exported="true">
        </activity>

    </application>
</manifest>
Это было полезно?

Решение

Я понял. Оказывается, вызов камеры. () Должен быть сделан в деятельности, а не в двигателе.

Все еще не уверен, почему это так. Я был бы признателен, если кто -то сможет объяснить мне это явление.

Другие советы

После остановки объекта CamerapReview выпустить объект камеры.

Попробуй это

stopCameraPreview(){
    if(camera != null){
        camera.stopPreview();
        camera.release();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top