2016-07-12 6 views
0

В Android 2.3, 4, 4,1, 4,2, 4,3, 4,4 работает правильноПочему камера не работает в Android 5?

Я эту функцию с помощью Android 2.3 API:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    // 1º Si se esta viendo preview, se detiene 
    if (mPreviewRunning) { 
     mCamera.stopPreview(); 
    } 
    // 2º Se setean los nuevos parametros de la camara 
    Camera.Parameters p = mCamera.getParameters(); 
    p.setPreviewSize(w, h); 
    mCamera.setParameters(p); 

    // 3º Volvemos a mostrar el preview 
    try { 
     mCamera.setPreviewDisplay(holder); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Toast.makeText(ctxt, "Error refreshing camera", Toast.LENGTH_LONG) 
      .show(); 
    } 

    mCamera.startPreview(); 
    mPreviewRunning = true; 
} 

АРР, сбой в линии, вернуть

ошибку : W/System.err: java.lang.RuntimeException: Сбой подключения к службе камеры

mCamera.setParameters(p); 

после возвращения этого:

W/System.err: java.io.IOException: открыть не удалось: ENOENT (Нет такого файла или каталога)

Это мой манифест для моих двух приложений:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.foca.deboSancion" 
    android:versionCode="4" 
    android:versionName="14.7" > 

    <uses-sdk android:minSdkVersion="8" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission android:name="android.permission.BLUETOOTH" /> 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.foca.deboComun" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-feature android:name="android.hardware.camera" /> 
    <uses-sdk android:minSdkVersion="8" /> 

ответ

1

Ну mCamera.setParameters(p); не lollypop (android 5.0) api, его устройство специфично. Большинство поведения устройств с параметрами камеры являются окончательными, я имею в виду, что ур не может его изменить, если вы попробуете его, произойдет сбой. Легкое возможное использование решения try catch, продвинутое использование рефлексии (предположение: dont go for this)