首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在使用android打开前置摄像头时出错

我在使用android打开前置摄像头时出错
EN

Stack Overflow用户
提问于 2012-10-11 17:50:35
回答 1查看 1.5K关注 0票数 0

我是在android相机应用程序的工作,我想绿屏色度关键效果捕获的图像。我已经在我的代码中使用了http://code.google.com/p/chroma-key-project/downloads/list这个色键项目。

我正在使用平板电脑,它有前置摄像头而不是后置摄像头..我也使用了前置摄像头的权限

代码语言:javascript
运行
复制
 <uses-permission android:name="android.permission.CAMERA" />

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

尽管如此,它仍然显示了从preview.java页到此行的错误空指针异常。camera.setPreviewDisplay(holder); // <9>为什么?

检查色度键project.please suggest中给定链接的preview.java页面。

我得到了这种类型的错误。

10-11 15:37:36.131: W/dalvikvm(11339):threadid=1:线程退出,未捕获异常(group=0x409ee1f8) 10-11 15:37:36.141: E/AndroidRuntime(11339):致命异常: main 10-11 15:37:36.141: E/AndroidRuntime(11339):java.lang.UnsupportedOperationException 10-11 15:37:36.141: E/AndroidRuntime(11339):at java.lang.Thread.stop(Thread.java:1076) 10-11 15:37:36.141: E/AndroidRuntime(11339):at java.lang.Thread.stop(Thread.java:1063) 10-11 15:37:36.141: E/AndroidRuntime(11339):at android 10-11 15:37:36.141: E/AndroidRuntime(11339):at android 10-11 15:37:36.141: E/AndroidRuntime(11339):at android。os.Handler.dispatchMessage(Handler.java:99) 10-11 15:37:36.141: E/AndroidRuntime(11339):at android.os.Looper.loop(Looper.java:137) 10-11 15:37:36.141: E/AndroidRuntime(11339):at android.app.ActivityThread.main(ActivityThread.java:4424) 10-11 15:37:36.141: E/AndroidRuntime(11339):at java.lang.reflect.Method.invokeNative(原生方法) 10-11 15:37:36.141: E/AndroidRuntime(11339):at java.lang.reflect.Method.invoke(Method.java:511) 10-11 15:37:36.141: E/AndroidRuntime(11339):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 10-11 15:37:36.141: E/AndroidRuntime(11339):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 10-11 15:37:36。141: E/AndroidRuntime(11339):在dalvik.system.NativeStart.main(本机方法)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-11 17:55:01

我认为Camera.open()试图打开默认的后置摄像头,所以它返回null,因为后端没有摄像头。

如果您尝试使用函数Camera.open(int)打开前置摄像头,会怎么样?

如下所示:

代码语言:javascript
运行
复制
int getFrontCameraId() {
    CameraInfo ci = new CameraInfo();
    for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, ci);
        if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
    }
    return -1; // No front-facing camera found
}

然后像这样得到它:

代码语言:javascript
运行
复制
int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);

来自:How to detect if there is front camera and if there is how to reach and use front camera?

停止编辑:你正在使用的代码非常旧,并且有各种各样的旧函数,我认为你的崩溃是由旧的线程函数()引起的。

链接中的代码:

代码语言:javascript
运行
复制
  public void startCamera() {
        setContentView(R.layout.camview);
        fGameView = null;
        fGameThread.stop();
        fGameThread=null;

据开发者网站介绍:

stop()此方法已弃用。因为以这种方式停止线程是不安全的,并且会使您的应用程序和VM处于不可预测的状态。

请参见:

java.lang.UnsupportedOperationException when my splash screen starts

http://developer.android.com/reference/java/lang/Thread.html#stop()

编辑二:

将onCreateOptionsMenu代码更改为此,不应使用myMenu变量。

代码语言:javascript
运行
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.add(0, MENU_START, 0, R.string.menu_start);
    menu.add(0, MENU_SEND, 0, R.string.menu_send);
    return true;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12836801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档