一、控制硬件的情节
早在2008年开发Symbian和WM程序的时候,就非常好奇如何用我们的代码来控制硬件设备,比如闪光灯就是一个很好的控制对象。我们开发程序,很多乐趣就在于控制。这是一种精神上的愉悦,无论在哪个领域,控制其他事物都是很吸引人的。那么转眼间到了2012年,Android开发也做了几年了,控制它的硬件却一直没有时间做,真是惭愧。今天得空,学习了一下,控制闪光灯大致有两种办法。下面就一一道来。
二、用IHardwareService直接控制
Android1.5以前是直接提供这个接口的,之后呢,需要我们自己来做一下。
在你的项目中新建一个包Android.os,新建一个IHardwareService.aidl文件,内容如下:
-
packageAndroid.os;
-
-
-
interfaceIHardwareService
- {
-
booleangetFlashlightEnabled();
-
voidsetFlashlightEnabled(booleanon);
- }
然后在你的程序中引入
-
importAndroid.os.IHardwareService;
-
-
-
-
-
-
-
privatevoidsetFlashlightEnabled(booleanisEnable)
- {
- try
- {
- Methodmethod=Class.forName("Android.os.ServiceManager").getMethod("getService",String.class);
- IBinderbinder=(IBinder)method.invoke(null,newObject[]{"hardware"});
-
- IHardwareServicelocalhardwareservice=IHardwareService.Stub.asInterface(binder);
- localhardwareservice.setFlashlightEnabled(isEnable);
- }
-
catch(Exceptione)
- {
- e.printStackTrace();
- }
-
- }
这样就可以开启闪光灯了。要使用的权限:
-
<uses-permissionAndroid:name="android.permission.FLASHLIGHT"/>
-
<uses-permissionAndroid:name="android.permission.HARDWARE_TEST"/>
-
三、用照相机来控制闪光灯
这是思维的另一个方向。Camera自带丰富的接口与Parameters,我们只管拿来使用就好了。
-
privateCameracamera=null;
-
privateParametersparameters=null;
-
- camera=Camera.open();
- parameters=camera.getParameters();
- parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
- camera.setParameters(parameters);
-
- parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
- camera.setParameters(parameters);
- camera.release();
如果这样遇到问题的话,可以尝试用camera的preview方法:
-
privatevoidOpenLightOn(){
-
if(null==m_Camera)
- {
- m_Camera=Camera.open();
- }
-
- Camera.Parametersparameters=m_Camera.getParameters();
- parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
- m_Camera.setParameters(parameters);
- m_Camera.autoFocus(newCamera.AutoFocusCallback(){
-
publicvoidonAutoFocus(booleansuccess,Cameracamera){
- }
- });
- m_Camera.startPreview();
- }
-
-
privatevoidCloseLightOff(){
-
if(m_Camera!=null)
- {
- m_Camera.stopPreview();
- m_Camera.release();
- m_Camera=null;
- }
- }
分享到:
相关推荐
在Android平台上,开发一款应用来控制手机的闪光灯,使其能开启或关闭,通常被称为“手电筒”功能。这个功能对于用户来说非常实用,尤其是在光线不足的环境中。本篇文章将详细探讨如何实现"Android闪光灯的打开与...
在Android API中,我们有两种主要的方式可以控制闪光灯:一是使用过时但更广泛的Camera API,二是使用现代的Camera2 API。 1. **Camera API**:在较早版本的Android系统中,我们通常通过`Camera`类来访问和控制相机...
4. **闪光灯控制**:使用Camera或Camera2 API的相应方法开启和关闭闪光灯。对于Camera2 API,这通常是通过创建`CaptureRequest.Builder`,设置闪光灯模式,然后提交到`CameraDevice`来实现。 5. **闪烁模式**:定义...
在Android平台上,手电筒应用程序是一种常见的实用工具,它利用设备内置的LED闪光灯作为光源,为用户提供紧急照明或者辅助视觉的功能。对于Android手电筒程序的开发,我们需要理解几个关键知识点,包括权限管理、...
【闪光灯手电筒】是安卓平台上的一种常见应用,它利用设备内置的LED闪光灯作为光源,实现手电筒的功能。在安卓系统中,通过访问相机API可以控制闪光灯的开启和关闭,从而达到照明的目的。这个【安卓闪光灯手电筒相关...
在Android平台上,手电筒应用是一种常见的实用工具,它利用设备的相机闪光灯或屏幕亮度来模拟光源。本文将深入探讨“Flashlight_android.zip”这个压缩包中的Android手电筒源码,帮助开发者理解如何在Android系统上...
1. 用户交互设计:参照微信的交互模式,设置明显的扫描按钮和切换摄像头的选项,以及开启/关闭闪光灯的控制。 2. 功能整合:除了基本的扫描功能,还应包含从相册选取图片进行解码的能力,这需要调用系统的照片库...
你需要获取Camera实例,然后调用其相关的预览方法来开启或关闭闪光灯。 3. **权限管理**:在AndroidManifest.xml文件中,需要添加对相机和闪光灯的使用权限,如`<uses-permission android:name="android.permission...
这是通过检查环境光线强度(通过Android的Sensor API获取)来决定是否开启闪光灯。当光线不足时,自动开启闪光灯以提高扫描效果。 4. **UI设计与用户交互**:除了基本的扫描功能,ZxingDemo还注重用户体验。例如,...
在Android平台上,手电筒应用是一种常见的实用工具,它允许用户快速开启设备的LED闪光灯作为照明设备。这个"android应用源码可以报警的手电.zip"文件提供了一个独特的手电筒应用源码,其中不仅包括基本的手电筒功能...
6. 用户界面:创建扫描界面,可以包含一个全屏的相机预览区域,以及一些操作按钮,如闪光灯开关、扫描取消等。使用ZXing库提供的`SurfaceView`来展示相机预览。 7. 错误处理:在扫描过程中可能出现各种错误,如相机...
- `Camera.Parameters`:获取相机参数,可以设置闪光灯模式,如`FLASH_MODE_ON`来开启闪光灯。 - `Camera.startPreview()`:开始预览,这一步是必要的,因为闪光灯只有在预览状态下才能工作。 - `Camera....
在Android平台上,手电筒应用程序是一种常见的实用工具,它允许用户快速开启设备的LED闪光灯作为光源。在本文中,我们将深入探讨一个经过修改的手电筒程序,它解决了之前版本中的一个问题并增加了新的功能。 首先,...
在Android平台上,手电筒应用是一种常见的实用工具,它利用设备上的LED闪光灯作为光源,为用户提供便捷的照明功能。Android手电筒的实现主要涉及以下几个关键知识点: 1. **权限声明**: 在AndroidManifest.xml...
在AndroidManifest.xml文件中,你会看到如`<uses-permission android:name="android.permission.CAMERA">`这样的权限声明,这是为了使用摄像头硬件,包括闪光灯。 3. **服务(Service)**:手电筒应用可能包含一个...
5. **闪光灯控制**:通过`Camera.Parameters`或`Camera2`的`Control` API,可以实现闪光灯的开启、关闭和自动模式。 6. **相机参数调整**:包括白平衡、ISO、焦距等,这些可以通过`Camera.Parameters`或`Camera2`的...
例如,通过`Camera.Parameters`对象,我们可以设置分辨率、ISO、色温、闪光灯模式等。这些参数的设置对最终拍摄的图片质量有直接影响。 现在,我们来到核心部分——聚焦。Android Camera API提供了自动对焦和手动...
1. 提供闪光灯控制:允许用户在暗光环境下开启或关闭闪光灯。 2. 自定义扫描框:调整扫描框的大小和位置,使用户更易于对准二维码。 3. 错误处理:处理无法扫描或识别的二维码,提供友好的提示信息。 4. 性能优化:...
在旧版API中,我们通常使用Camera类的`setFlashMode()`方法来开启或关闭闪光灯。而在新版的Camera2 API中,需要创建CameraDevice对象,然后通过`createCaptureRequest()`建立请求,将闪光灯模式设置为ON或OFF。注意...
通过创建一个Builder类,我们可以设置不同的参数,如分辨率、拍照质量、是否开启闪光灯等,然后调用Builder的build()方法来生成相机配置对象。 自定义相机的实现通常涉及以下几个关键部分: 1. **Camera初始化**:...