2016-07-12 1 views
0

Dans Android 2.3, 4, 4.1, 4.2, 4.3, 4.4 fonctionne correctementPourquoi l'appareil photo ne fonctionne pas sous Android 5?

J'ai cette fonction avec 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; 
} 

Le crash de l'application en ligne, retour

erreur : W/System.err: java.lang.RuntimeException: Echec de la connexion au service de la caméra

mCamera.setParameters(p); 

après le retour ceci:

W/System.err: java.io.IOException: open failed: ENOENT (Aucun fichier ou répertoire)

Ceci est mon manifeste pour mes deux applications:

<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" /> 

Répondre

1

Eh bien mCamera.setParameters(p); n'est pas lollypop (android 5.0) api question, son dispositif spécifique. La plupart des comportements des périphériques avec les paramètres de la caméra sont définitifs, je veux dire que vous ne pouvez pas le changer, si vous essayez, il va planter. L'utilisation facile de la solution d'essai try, avancée est l'utilisation de la réflexion (suggestion: ne pas aller pour cela)