`
dowhathowtodo
  • 浏览: 829073 次
文章分类
社区版块
存档分类
最新评论

Android开启闪光灯的几种办法

 
阅读更多

一、控制硬件的情节

早在2008年开发Symbian和WM程序的时候,就非常好奇如何用我们的代码来控制硬件设备,比如闪光灯就是一个很好的控制对象。我们开发程序,很多乐趣就在于控制。这是一种精神上的愉悦,无论在哪个领域,控制其他事物都是很吸引人的。那么转眼间到了2012年,Android开发也做了几年了,控制它的硬件却一直没有时间做,真是惭愧。今天得空,学习了一下,控制闪光灯大致有两种办法。下面就一一道来。

二、用IHardwareService直接控制

Android1.5以前是直接提供这个接口的,之后呢,需要我们自己来做一下。

在你的项目中新建一个包Android.os,新建一个IHardwareService.aidl文件,内容如下:

  1. packageAndroid.os;
  2. /**{@hide}*/
  3. interfaceIHardwareService
  4. {
  5. //obsoleteflashlightsupport
  6. booleangetFlashlightEnabled();
  7. voidsetFlashlightEnabled(booleanon);
  8. }

然后在你的程序中引入

  1. importAndroid.os.IHardwareService;
  2. /**
  3. *设置闪光灯的开启和关闭
  4. *@paramisEnable
  5. *@authorlinc
  6. *@date2012-3-18
  7. */
  8. privatevoidsetFlashlightEnabled(booleanisEnable)
  9. {
  10. try
  11. {
  12. Methodmethod=Class.forName("Android.os.ServiceManager").getMethod("getService",String.class);
  13. IBinderbinder=(IBinder)method.invoke(null,newObject[]{"hardware"});
  14. IHardwareServicelocalhardwareservice=IHardwareService.Stub.asInterface(binder);
  15. localhardwareservice.setFlashlightEnabled(isEnable);
  16. }
  17. catch(Exceptione)
  18. {
  19. e.printStackTrace();
  20. }
  21. }

这样就可以开启闪光灯了。要使用的权限:

  1. <uses-permissionAndroid:name="android.permission.FLASHLIGHT"/>
  2. <uses-permissionAndroid:name="android.permission.HARDWARE_TEST"/>
  3. 三、用照相机来控制闪光灯

    这是思维的另一个方向。Camera自带丰富的接口与Parameters,我们只管拿来使用就好了。

    1. privateCameracamera=null;
    2. privateParametersparameters=null;
    3. //直接开启
    4. camera=Camera.open();
    5. parameters=camera.getParameters();
    6. parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启
    7. camera.setParameters(parameters);
    8. //直接关闭
    9. parameters.setFlashMode(Parameters.FLASH_MODE_OFF);//关闭
    10. camera.setParameters(parameters);
    11. camera.release();

    如果这样遇到问题的话,可以尝试用camera的preview方法:

    1. privatevoidOpenLightOn(){
    2. if(null==m_Camera)
    3. {
    4. m_Camera=Camera.open();
    5. }
    6. Camera.Parametersparameters=m_Camera.getParameters();
    7. parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    8. m_Camera.setParameters(parameters);
    9. m_Camera.autoFocus(newCamera.AutoFocusCallback(){
    10. publicvoidonAutoFocus(booleansuccess,Cameracamera){
    11. }
    12. });
    13. m_Camera.startPreview();
    14. }
    15. privatevoidCloseLightOff(){
    16. if(m_Camera!=null)
    17. {
    18. m_Camera.stopPreview();
    19. m_Camera.release();
    20. m_Camera=null;
    21. }
    22. }

分享到:
评论
1 楼 Anloney 2014-11-19  

  楼主,用第二种方法闪光灯只能亮不能闪烁是怎么回事啊,可不可以设置让闪光灯闪烁呢,

我配置文件都加了。

<!-- 打开闪光灯权限 -->
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.CAMERA" />

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

相关推荐

    Android闪光灯的打开与关闭

    在Android平台上,开发一款应用来控制手机的闪光灯,使其能开启或关闭,通常被称为“手电筒”功能。这个功能对于用户来说非常实用,尤其是在光线不足的环境中。本篇文章将详细探讨如何实现"Android闪光灯的打开与...

    Android 闪光灯手电筒软件源码.rar

    在Android API中,我们有两种主要的方式可以控制闪光灯:一是使用过时但更广泛的Camera API,二是使用现代的Camera2 API。 1. **Camera API**:在较早版本的Android系统中,我们通常通过`Camera`类来访问和控制相机...

    来电闪光等源码

    4. **闪光灯控制**:使用Camera或Camera2 API的相应方法开启和关闭闪光灯。对于Camera2 API,这通常是通过创建`CaptureRequest.Builder`,设置闪光灯模式,然后提交到`CameraDevice`来实现。 5. **闪烁模式**:定义...

    Android手电筒程序

    在Android平台上,手电筒应用程序是一种常见的实用工具,它利用设备内置的LED闪光灯作为光源,为用户提供紧急照明或者辅助视觉的功能。对于Android手电筒程序的开发,我们需要理解几个关键知识点,包括权限管理、...

    安卓闪光灯手电筒相关-定时电筒.zip

    【闪光灯手电筒】是安卓平台上的一种常见应用,它利用设备内置的LED闪光灯作为光源,实现手电筒的功能。在安卓系统中,通过访问相机API可以控制闪光灯的开启和关闭,从而达到照明的目的。这个【安卓闪光灯手电筒相关...

    Flashlight_android.zip_android_android flashlight_android 源码_手电筒

    在Android平台上,手电筒应用是一种常见的实用工具,它利用设备的相机闪光灯或屏幕亮度来模拟光源。本文将深入探讨“Flashlight_android.zip”这个压缩包中的Android手电筒源码,帮助开发者理解如何在Android系统上...

    带闪光灯仿微信界面的二维码扫描

    1. 用户交互设计:参照微信的交互模式,设置明显的扫描按钮和切换摄像头的选项,以及开启/关闭闪光灯的控制。 2. 功能整合:除了基本的扫描功能,还应包含从相册选取图片进行解码的能力,这需要调用系统的照片库...

    手电筒项目源码和APK

    你需要获取Camera实例,然后调用其相关的预览方法来开启或关闭闪光灯。 3. **权限管理**:在AndroidManifest.xml文件中,需要添加对相机和闪光灯的使用权限,如`&lt;uses-permission android:name="android.permission...

    ZxingDemo:带闪光灯的二维码扫码demo(基于zxing core libray)

    这是通过检查环境光线强度(通过Android的Sensor API获取)来决定是否开启闪光灯。当光线不足时,自动开启闪光灯以提高扫描效果。 4. **UI设计与用户交互**:除了基本的扫描功能,ZxingDemo还注重用户体验。例如,...

    android应用源码可以报警的手电.zip

    在Android平台上,手电筒应用是一种常见的实用工具,它允许用户快速开启设备的LED闪光灯作为照明设备。这个"android应用源码可以报警的手电.zip"文件提供了一个独特的手电筒应用源码,其中不仅包括基本的手电筒功能...

    android 扫描二维码源码及实例

    6. 用户界面:创建扫描界面,可以包含一个全屏的相机预览区域,以及一些操作按钮,如闪光灯开关、扫描取消等。使用ZXing库提供的`SurfaceView`来展示相机预览。 7. 错误处理:在扫描过程中可能出现各种错误,如相机...

    FrontFlashCamera:使用前置摄像头为自拍添加闪光灯

    - `Camera.Parameters`:获取相机参数,可以设置闪光灯模式,如`FLASH_MODE_ON`来开启闪光灯。 - `Camera.startPreview()`:开始预览,这一步是必要的,因为闪光灯只有在预览状态下才能工作。 - `Camera....

    修改后的手电筒程序

    在Android平台上,手电筒应用程序是一种常见的实用工具,它允许用户快速开启设备的LED闪光灯作为光源。在本文中,我们将深入探讨一个经过修改的手电筒程序,它解决了之前版本中的一个问题并增加了新的功能。 首先,...

    androin手电筒

    在Android平台上,手电筒应用是一种常见的实用工具,它利用设备上的LED闪光灯作为光源,为用户提供便捷的照明功能。Android手电筒的实现主要涉及以下几个关键知识点: 1. **权限声明**: 在AndroidManifest.xml...

    Android应用源码之安卓多功能手电筒项目.zip

    在AndroidManifest.xml文件中,你会看到如`&lt;uses-permission android:name="android.permission.CAMERA"&gt;`这样的权限声明,这是为了使用摄像头硬件,包括闪光灯。 3. **服务(Service)**:手电筒应用可能包含一个...

    Android相机

    5. **闪光灯控制**:通过`Camera.Parameters`或`Camera2`的`Control` API,可以实现闪光灯的开启、关闭和自动模式。 6. **相机参数调整**:包括白平衡、ISO、焦距等,这些可以通过`Camera.Parameters`或`Camera2`的...

    Android Camera聚焦

    例如,通过`Camera.Parameters`对象,我们可以设置分辨率、ISO、色温、闪光灯模式等。这些参数的设置对最终拍摄的图片质量有直接影响。 现在,我们来到核心部分——聚焦。Android Camera API提供了自动对焦和手动...

    android 实现二维码扫描

    1. 提供闪光灯控制:允许用户在暗光环境下开启或关闭闪光灯。 2. 自定义扫描框:调整扫描框的大小和位置,使用户更易于对准二维码。 3. 错误处理:处理无法扫描或识别的二维码,提供友好的提示信息。 4. 性能优化:...

    双向手电筒 源代码

    在旧版API中,我们通常使用Camera类的`setFlashMode()`方法来开启或关闭闪光灯。而在新版的Camera2 API中,需要创建CameraDevice对象,然后通过`createCaptureRequest()`建立请求,将闪光灯模式设置为ON或OFF。注意...

    Android自定义相机源码(Builder模式封装)

    通过创建一个Builder类,我们可以设置不同的参数,如分辨率、拍照质量、是否开启闪光灯等,然后调用Builder的build()方法来生成相机配置对象。 自定义相机的实现通常涉及以下几个关键部分: 1. **Camera初始化**:...

Global site tag (gtag.js) - Google Analytics