Java 为什么摄像头不能在安卓5中工作?

Java 为什么摄像头不能在安卓5中工作?,java,android,camera,android-5.0-lollipop,Java,Android,Camera,Android 5.0 Lollipop,在安卓2.3、4、4.1、4.2、4.3、4.4中工作正常 我已经在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º

在安卓2.3、4、4.1、4.2、4.3、4.4中工作正常

我已经在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:open失败:enoint(没有这样的文件或目录)

这是我的两个应用程序清单:

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


mCamera.setParameters(p)
不是lollypop(android 5.0)api问题,它是特定于设备的。大多数设备的行为和相机参数是最终的,我的意思是你不能改变它,如果你尝试它会崩溃。简单可行的解决方案使用try-catch,高级是使用反射(建议:不要这样做)