Android的错误而Camera.open() [英] Android Error while 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屋!