我无法让相机打开它的灯

     2023-02-23     267

关键词:

【中文标题】我无法让相机打开它的灯【英文标题】:I'm not able to get the camera to turn on its light 【发布时间】:2014-02-02 17:49:27 【问题描述】:

我有一个简单的类应用程序,它应该打开相机的灯,但这是我的错误日志;

02-02 12:40:47.939: W/dalvikvm(24314): threadid=1: thread exiting with uncaught exception (group=0x4178d898)
02-02 12:40:47.949: E/AndroidRuntime(24314): FATAL EXCEPTION: main
02-02 12:40:47.949: E/AndroidRuntime(24314): java.lang.NullPointerException
02-02 12:40:47.949: E/AndroidRuntime(24314):    at de.vogella.android.notificationmanager.NotificationReceiverActivity.onClick(NotificationReceiverActivity.java:53)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.view.View.performClick(View.java:4475)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.view.View$PerformClick.run(View.java:18784)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.os.Handler.handleCallback(Handler.java:730)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.os.Looper.loop(Looper.java:137)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at android.app.ActivityThread.main(ActivityThread.java:5414)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at java.lang.reflect.Method.invokeNative(Native Method)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at java.lang.reflect.Method.invoke(Method.java:525)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
02-02 12:40:47.949: E/AndroidRuntime(24314):    at dalvik.system.NativeStart.main(Native Method)

这是我的课;

import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;

public class NotificationReceiverActivity extends Activity implements OnClickListener 
    private final String CLASSNAME = getClass().getSimpleName();
    boolean camOn = false;
    public boolean started;

Camera cam = null;
ImageButton ib1;
Parameters para;
PowerManager pm;
WakeLock wl;
@Override
protected void onCreate(Bundle savedInstanceState) 
started = true;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "whatever");
super.onCreate(savedInstanceState);
setContentView(R.layout.result);

wl.acquire();
initialize();
ib1.setOnClickListener(this);
Log.i(CLASSNAME, "CREATING NOW  "+camOn);


private void initialize() 
// TODO Auto-generated method stub
ib1 = (ImageButton) findViewById(R.id.ib2);


public void onClick(View v) 

// TODO Auto-generated method stub
if (camOn == false) 
       cam.release();

    cam = Camera.open();
    para = cam.getParameters();
    para.setFlashMode(Parameters.FLASH_MODE_TORCH);
    cam.setParameters(para);
    Log.i(CLASSNAME, "AA1  "+camOn);
    camOn = true;
    Log.i(CLASSNAME, "AA2  "+camOn);

 



else 
    para.setFlashMode(Parameters.FLASH_MODE_OFF);
    cam.setParameters(para);
    cam.release();
    //cam = null;
    Log.i(CLASSNAME, "BB1  "+camOn);
    camOn = false;
    Log.i(CLASSNAME, "BB2  "+camOn);




@Override
protected void onPause() 
super.onPause();
// TODO Auto-generated method stub
cam.release();
//  cam=cam;
// finish();*/

@Override
protected void onStop() 
super.onStop();
// cam.release();


@Override
protected void onDestroy() 
super.onDestroy();
// cam.release();


protected void onResume() 
super.onResume();
//cam = Camera.open();



如果我在 android 4.1.2 上运行完全相同的代码,它可以完美运行,但在我的 4.3 版本的 android Galaxy note3 上,它会显示 GUI,当您单击按钮以打开/关闭相机灯时什么都不做,把你看到的日志猫给我。

这是布局文件;

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelativeLayout1"
    android:layout_
    android:layout_
    android:orientation="vertical"
    tools:context=".Flash" >

    <TextView
        android:layout_
        android:layout_
        android:layout_marginBottom="15dip"
        android:gravity="center"
        android:padding="15dip"
        android:text="\n\n\n\n\n"
        android:textColor="#3b3b3b"
        android:textSize="13dip" />

    <ImageButton
        android:id="@+id/ib2"
        android:layout_
        android:layout_
        android:src="@drawable/ic_launcher" />

    <TextView
        android:layout_
        android:layout_
        android:layout_marginBottom="15dip"
        android:gravity="center"
        android:padding="15dip"
        android:text="\n"
        android:textColor="#3b3b3b"
        android:textSize="13dip" />

</LinearLayout>

【问题讨论】:

【参考方案1】:

我注意到了几件事。

首先,当camOn == false 你有cam.release() 即使cam=Null 在那个时候。如果我在那里遗漏了一些东西,那很好。

第二个是你实际上需要一个surfaceView 元素来使用相机。有些设备没有这个也可以,但它是android系统的一部分,详细here。

例如,在你的布局中添加一个surfaceView之后,你会这样做

msurfaceView = (SurfaceView)findViewById(R.id.surfaceView);
msurfaceHolder = surfaceView.getHolder();
msurfaceHolder.addCallback(this);
msurfaceHolder.setFixedSize(1, 1); 

setParameters设置相机参数后,调用

mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();

这是我的一部手机上的一个问题,使用表面视图解决了这个问题。我假设您已编辑清单文件以包含正确的权限。

【讨论】:

你是救生员!我刚刚添加了我的布局文件,你能告诉我如何在那里实现它吗?另外,我应该将课程扩展到 SurfaceView 吗?我已经能感觉到很多错误了。 太好了,很高兴能帮上忙。

我的相机应用程序正在拍照但无法打开/保存。当我打开它只是空白

】我的相机应用程序正在拍照但无法打开/保存。当我打开它只是空白【英文标题】:Mycameraappistakingpicturesbutunabletoopen/save.Wheniopenitisjustblank【发布时间】:2020-03-0522:14:12【问题描述】:我设计了一个应用程序,当我点击它时,相... 查看详情

OpenGL - 无法让相机工作[关闭]

】OpenGL-无法让相机工作[关闭]【英文标题】:OpenGL-Can\'tgetcameratowork[closed]【发布时间】:2014-05-1823:54:27【问题描述】:我在关注的教程系列中遇到了很多问题。(教程可以在这里找到:http://www.antongerdelan.net/opengl/我在虚拟相机教... 查看详情

无法用ubuntu opencv c ++打开相机

】无法用ubuntuopencvc++打开相机【英文标题】:cannotopencamerawithubuntuopencvc++【发布时间】:2018-02-1011:20:06【问题描述】:我有一个问题,我无法打开我电脑的摄像头0这是我使用的代码:#include"opencv2/opencv.hpp"#include<iostream>usingnam... 查看详情

如何在 OpenCV 中使用相机

...。我一直在玩它一整天,试图让它识别我的相机。我就是无法让它工作,也找不到任何关于它的信息。我的摄像头是一个USBxbox实时网络摄像头,当我将它连接到我的计算机时,windows就将它识别为它自己的孩子并安装了驱动程序... 查看详情

OpenGL - 让相机移动

...:2018-03-1521:54:10【问题描述】:我的OpenGL游戏出现问题,无法让相机移动。我无法使用GLFW、GLUT和glulookat()。这是我的代码,有什么问题?P.S一切正常,除了相机移动意味着游戏可以完美运行,只是不能移动相机。我的相机代码... 查看详情

Cordova 相机 - 无法访问库

】Cordova相机-无法访问库【英文标题】:CordovaCamera-Can\'taccesslibrary【发布时间】:2015-08-2609:26:26【问题描述】:我尝试在Ionic上下文中使用Cordova相机插件(在Android上)使用相机拍照或从库中挑选图片。我可以拍照,但似乎没有使... 查看详情

使用 API 的飞利浦 Hue 应用程序能否对打开的灯做出反应?

...设置为特定颜色。如果不经常轮询(这似乎很蹩脚),我无法找到一种方法来做到这一点。HueiOS主应用程序有警报,但灯仅 查看详情

无法在 android 上使用 C++ OpenCV 打开相机

】无法在android上使用C++OpenCV打开相机【英文标题】:Can\'topencamerausingC++OpenCVonandroid【发布时间】:2018-03-0619:25:39【问题描述】:我正在尝试将一个非常简单的OpenCV应用程序迁移到android。该代码尝试从与使用C#和Xamarin的主应用程... 查看详情

无法在 python 中使用 gphoto2 打开相机

】无法在python中使用gphoto2打开相机【英文标题】:Couldnotopencamerausinggphoto2inpython【发布时间】:2019-10-1023:32:12【问题描述】:我尝试在RaspberryPI上使用Python/gphoto2控制SonyAlpha。我已经尝试了许多python绑定(python-gphoto2、gphoto2-cffi、... 查看详情

无法在 Android 手机中使用 cv2.VideoCapture(0) 打开相机

】无法在Android手机中使用cv2.VideoCapture(0)打开相机【英文标题】:Cannotopencamerausingcv2.VideoCapture(0)inandroidphones【发布时间】:2021-11-0810:39:14【问题描述】:我需要使用OpenCVVideoCapture()方法和pythonkivy框架创建一个android应用程序。请... 查看详情

Android Twilio Video - 获取相机流

】AndroidTwilioVideo-获取相机流【英文标题】:AndroidTwilioVideo-getcamerastream【发布时间】:2016-11-2905:05:39【问题描述】:我目前正在使用TwilioVideoAPI开发应用程序:https://www.twilio.com/video它仍处于测试阶段,但在大多数情况下工作得很... 查看详情

单击按钮打开相机,应用程序崩溃

】单击按钮打开相机,应用程序崩溃【英文标题】:Opencamerawithclickingabutton,appcrashes【发布时间】:2018-03-2101:20:59【问题描述】:我正在使用API26。我想在用户单击按钮后打开相机。我有按钮,它的ID是CAMERA。当点击按钮时,我调... 查看详情

通过相机识别物体并做出反应[关闭]

】通过相机识别物体并做出反应[关闭]【英文标题】:Identificateanobjectbythecameraandreact[closed]【发布时间】:2013-06-2709:55:24【问题描述】:让我们假设相机变成了一堵墙,它看到的都是白色的。一旦我关掉房间里的灯,摄像头就会... 查看详情

cvCreateCameraCapture 无法访问 OpenCV 3.0 相机

】cvCreateCameraCapture无法访问OpenCV3.0相机【英文标题】:OpenCV3.0cameranotaccessiblebycvCreateCameraCapture【发布时间】:2015-11-1416:19:21【问题描述】:使用windows正在尝试使用cvCreateCameraCapture(0)打开我的网络摄像头;或cvCaptureFromCAM(0)但当我... 查看详情

未经相机许可无法打开相机“0”

】未经相机许可无法打开相机“0”【英文标题】:cannotopencamera"0"withoutcamerapermission【发布时间】:2021-08-0517:37:30【问题描述】:我的清单中有以下内容<uses-featureandroid:name="android.hardware.camera"/><uses-featureandroid:name="an... 查看详情

为啥我无法在 Android Instant App 中访问相机?

】为啥我无法在AndroidInstantApp中访问相机?【英文标题】:Whycan\'tIaccesscamerainAndroidInstantApp?为什么我无法在AndroidInstantApp中访问相机?【发布时间】:2018-02-1820:04:38【问题描述】:我正在尝试开发一个相机即时应用程序,但是当... 查看详情

解析自然语言

...定用户想要什么。想法是字符串是从语音生成的示例1:打开厨房的灯,关闭卧室和客厅的灯。 查看详情

应用程序打开画廊而不是相机 - XCode,SwiftUI

】应用程序打开画廊而不是相机-XCode,SwiftUI【英文标题】:Applicationopensgalleryinsteadofcamera-XCode,SwiftUI【发布时间】:2020-07-0119:03:05【问题描述】:我有一个应用程序,它的目标是打开相机拍照。然后将分析图片,但这会在稍后进... 查看详情