后置摄像头的Andr​​oid无法正常工作 [英] Back camera android not work

查看:142
本文介绍了后置摄像头的Andr​​oid无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题。我想从执行示例应用程序
http://www.vogella.com/articles/AndroidCamera/article.html
有用。
但是,当在code CAMERA_FACING_FRONT变化CAMERA_FACING_BACK我看到LogCat中:相机错误-1

我执行它在我的三星Galaxy SII

 私人诠释findFrontFacingCamera(){
INT cameraId = -1;
//搜索的前置摄像头
INT numberOfCameras = Camera.getNumberOfCameras();
的for(int i = 0; I< numberOfCameras;我++){
  CameraInfo信息=新CameraInfo();
  Camera.getCameraInfo(ⅰ,信息);
  如果(info.facing == CameraInfo.CAMERA_FACING_FRONT){
    Log.d(DEBUG_TAG相机找到了);
    cameraId = I;
    打破;
  }
}
返回cameraId;

}

当前code

 私人诠释findFrontFacingCamera(){
    INT cameraId = -1;
    //搜索的前置摄像头
    INT numberOfCameras = Camera.getNumberOfCameras();
    的for(int i = 0; I< numberOfCameras;我++){
      CameraInfo信息=新CameraInfo();
      Camera.getCameraInfo(ⅰ,信息);
      如果(info.facing == CameraInfo.CAMERA_FACING_BACK){
        Log.d(DEBUG_TAG相机发现+ info.facing);
        cameraId = I;
        打破;
      }
    }
    返回cameraId;
  }

logcat的:

  21 04-30:14:36.400:D / MakePhotoActivity(8793):相机找到0
04-30 21:14:36.400:I /摄像机(8793):sendBroadcast intent.stop.app式应用
04-30 21:14:36.650:D / libEGL(8793):加载/system/lib/egl/libEGL_mali.so
04-30 21:14:36.655:D / libEGL(8793):加载/system/lib/egl/libGLESv1_CM_mali.so
04-30 21:14:36.660:D / libEGL(8793):加载/system/lib/egl/libGLESv2_mali.so
04-30 21:14:36.665:D /(8793):设备驱动程序API匹配
04-30 21:14:36.665:D /(8793):设备驱动程序API版本:10
04-30 21:14:36.665:D /(8793):用户空间API版本:10
04-30 21:14:36.665:D /(8793):马里:版本=的Linux r2p4-02rel0 BUILD_DATE =周四10月25日8时43分05秒KST 2012
04-30 21:14:36.685:D / OpenGLRenderer(8793):启用调试模式0
04-30 21:16:21.695:D / dalvikvm(8793):WAIT_FOR_CONCURRENT_GC受阻0毫秒
04-30 21:16:21.775:D / dalvikvm(8793):GC_EXPLICIT释放78K,免费9467K / 10883K 14%,暂停9ms的+ 4ms的,总82MS
04-30 21:16:22.010:E /摄像机(8793):错误-1

code的其余部分。

 公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    //我们有一个摄像头?
    如果(!getPackageManager()
        .hasSystemFeature(PackageManager.FEATURE_CAMERA)){
      Toast.makeText(这一点,没有此设备上的相机,Toast.LENGTH_LONG)
          。显示();
    }其他{
      cameraId = findFrontFacingCamera();
      如果(cameraId℃,){
        Toast.makeText(这一点,没有前置摄像头发现。
            Toast.LENGTH_LONG).show();
      }其他{
        摄像头= Camera.open(cameraId);
      }
    }
  }  公共无效的onClick(查看视图){    camera.takePicture(NULL,NULL,
        新PhotoHandler(getApplicationContext()));
  }

权限:

 <使用许可权的android:NAME =android.permission.CAMERA/>
    <使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STORAG​​E/>
    <使用特征的android:NAME =android.hardware.camera/>
    <使用许可权的android:NAME =android.permission.FLASHLIGHT/>
     <使用特征的android:NAME =android.hardware.camera.autofocus/>


解决方案

我建议加入一些日志中显示的值 info.facing CameraInfo.CAMERA_FACING_FRONT CAMERA_FACING_BACK 的值为0和 CAMERA_FACING_FRONT = 1 。检查 info.facing 的价值,这是什么设备返回

如果您要访问的朝后摄像头,你可以试试
 相机= Camera.open();

有可能是硬件或设备的相关权限的原因,你得到一个运行时错误。

I have a problem. I want execute example app from http://www.vogella.com/articles/AndroidCamera/article.html It works. But when change in code CAMERA_FACING_FRONT to CAMERA_FACING_BACK I see in LogCat: Camera Error -1

I execute it on my Samsung Galaxy SII

private int findFrontFacingCamera() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
  CameraInfo info = new CameraInfo();
  Camera.getCameraInfo(i, info);
  if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
    Log.d(DEBUG_TAG, "Camera found");
    cameraId = i;
    break;
  }
}
return cameraId;

}

Current code

private int findFrontFacingCamera() {
    int cameraId = -1;
    // Search for the front facing camera
    int numberOfCameras = Camera.getNumberOfCameras();
    for (int i = 0; i < numberOfCameras; i++) {
      CameraInfo info = new CameraInfo();
      Camera.getCameraInfo(i, info);
      if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
        Log.d(DEBUG_TAG, "Camera found " + info.facing );
        cameraId = i;
        break;
      }
    }
    return cameraId;
  }

logCat:

  04-30 21:14:36.400: D/MakePhotoActivity(8793): Camera found 0
04-30 21:14:36.400: I/Camera(8793): sendBroadcast intent.stop.app-in-app
04-30 21:14:36.650: D/libEGL(8793): loaded /system/lib/egl/libEGL_mali.so
04-30 21:14:36.655: D/libEGL(8793): loaded /system/lib/egl/libGLESv1_CM_mali.so
04-30 21:14:36.660: D/libEGL(8793): loaded /system/lib/egl/libGLESv2_mali.so
04-30 21:14:36.665: D/(8793): Device driver API match
04-30 21:14:36.665: D/(8793): Device driver API version: 10
04-30 21:14:36.665: D/(8793): User space API version: 10 
04-30 21:14:36.665: D/(8793): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Thu Oct 25 08:43:05 KST 2012 
04-30 21:14:36.685: D/OpenGLRenderer(8793): Enabling debug mode 0
04-30 21:16:21.695: D/dalvikvm(8793): WAIT_FOR_CONCURRENT_GC blocked 0ms
04-30 21:16:21.775: D/dalvikvm(8793): GC_EXPLICIT freed 78K, 14% free 9467K/10883K, paused 9ms+4ms, total 82ms
04-30 21:16:22.010: E/Camera(8793): Error -1

rest of code

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // do we have a camera?
    if (!getPackageManager()
        .hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
      Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
          .show();
    } else {
      cameraId = findFrontFacingCamera();
      if (cameraId < 0) {
        Toast.makeText(this, "No front facing camera found.",
            Toast.LENGTH_LONG).show();
      } else {
        camera = Camera.open(cameraId);
      }
    }
  }

  public void onClick(View view) {

    camera.takePicture(null, null,
        new PhotoHandler(getApplicationContext()));
  }

permission:

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

解决方案

I suggest adding some logs to display the values of info.facing and CameraInfo.CAMERA_FACING_FRONT. CAMERA_FACING_BACK has a value of 0 and CAMERA_FACING_FRONT = 1. Check the value in info.facing, which is what the device returns

If you're accessing the backfacing camera, you can try camera = Camera.open();.

There might be a hardware or device permission reason why you are getting a runtime error.

这篇关于后置摄像头的Andr​​oid无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆