Android的错误而Camera.open() [英] Android Error while Camera.open()

查看:1192
本文介绍了Android的错误而Camera.open()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是想尝试在Android上使用我的摄影机。我不知道我能得到错误日志,但我得到一个错误,当我调用函数Camera.open()。

使用IM的SDK例如code,但它没有工作。

我也尝试了设置mCamera发布之前为null。是的,我已经设置好的权限在manifest.xml

它没有与模拟器的作品,即使我的HTC

 包com.example.android.apis.graphics;进口android.app.Activity;
进口android.content.Context;
进口android.hardware.Camera;
进口android.os.Bundle;
进口android.view.SurfaceHolder;
进口android.view.SurfaceView;
进口android.view.Window;
进口java.io.IOException异常;
公共类相机preVIEW延伸活动{
    私人preVIEW米preVIEW;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);    //隐藏窗口的标题。
    requestWindowFeature(Window.FEATURE_NO_TITLE);    //创建我们的preVIEW查看和设置它作为我们活动的内容。
    米preVIEW =新的preVIEW(本);
    的setContentView(M preVIEW);
}}
类preVIEW延伸SurfaceView实现SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    相机mCamera;
preVIEW(上下文的背景下){
    超级(上下文);    //安装SurfaceHolder.Callback所以我们得到通知时,
    //创建下垫面和销毁。
    mHolder = getHolder();
    mHolder.addCallback(本);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}公共无效surfaceCreated(SurfaceHolder持有人){
    //表面有被创建,获取摄像机,并告诉它在哪里
    //绘制。
    mCamera = Camera.open();
    尝试{
       mCamera.set previewDisplay(支架);
    }赶上(IOException异常除外){
        mCamera.release();
        mCamera = NULL;
        // TODO:在此处增加更多的异常处理逻辑
    }
}公共无效surfaceDestroyed(SurfaceHolder持有人){
    //当我们回到地面就会被破坏,因此停止preVIEW。
    //因为CameraDevice对象不是共享资源,这是非常
    //重要的是释放它当活动被暂停。
    mCamera.stop preVIEW();
    mCamera.release();
    mCamera = NULL;
}公共无效surfaceChanged(SurfaceHolder架,INT格式,诠释W,INT高){
    //现在,尺寸是已知的,设置相机参数,并开始
    //将preVIEW。
    Camera.Parameters参数= mCamera.getParameters();
    parameters.set previewSize(W,H);
    mCamera.setParameters(参数);
    mCamera.start preVIEW();
}}


解决方案

看一看在接受的答案<一提供的code href=\"http://stackoverflow.com/questions/7942378/android-camera-will-not-work-start$p$pview-fails\">here.它应该帮助您开始。

编辑:嗯,你logcat的错误建议你不要在你的清单文件以下行(结束下面的一个&LT; /用途&gt; 元素:

 &LT;使用许可权的android:NAME =android.permission.CAMERA/&GT;
&LT;使用特征的android:NAME =android.hardware.camera/&GT;

i just wanna try to Access my Camera on Android. I dont know how i can get error logs, but i get an error when i call the function Camera.open().

Im using the SDK example Code, but it didnt works.

I also tried out to set mCamera to null before releasing. And yes i have setted the permission in the manifest.xml

it didnt works with the emulator even with my htc

package com.example.android.apis.graphics;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import java.io.IOException;


public class CameraPreview extends Activity {    
    private Preview mPreview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Hide the window title.
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    // Create our Preview view and set it as the content of our activity.
    mPreview = new Preview(this);
    setContentView(mPreview);
}

}


class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Camera mCamera;


Preview(Context context) {
    super(context);

    // Install a SurfaceHolder.Callback so we get notified when the
    // underlying surface is created and destroyed.
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public void surfaceCreated(SurfaceHolder holder) {
    // The Surface has been created, acquire the camera and tell it where
    // to draw.
    mCamera = Camera.open();
    try {
       mCamera.setPreviewDisplay(holder);
    } catch (IOException exception) {
        mCamera.release();
        mCamera = null;
        // TODO: add more exception handling logic here
    }
}

public void surfaceDestroyed(SurfaceHolder holder) {
    // Surface will be destroyed when we return, so stop the preview.
    // Because the CameraDevice object is not a shared resource, it's very
    // important to release it when the activity is paused.
    mCamera.stopPreview();
    mCamera.release();
    mCamera = null;
}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    // Now that the size is known, set up the camera parameters and begin
    // the preview.
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setPreviewSize(w, h);
    mCamera.setParameters(parameters);
    mCamera.startPreview();
}

}

解决方案

Have a look at the code provided in the accepted answer here. It should help get you started.

Edit: Ah, your logcat error suggests that you don't have one of the following lines in your manifest file (below the end </application> element:

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

这篇关于Android的错误而Camera.open()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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