一、控制硬件的情节

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

二、用IHardwareService直接控制

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

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

package android.os;/** {@hide} */
interface IHardwareService
{// obsolete flashlight supportboolean getFlashlightEnabled();void setFlashlightEnabled(boolean on);
}

然后在你的程序中引入

import android.os.IHardwareService;/*** 设置闪光灯的开启和关闭* @param isEnable* @author linc* @date 2012-3-18*/private void setFlashlightEnabled(boolean isEnable){try{Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);IBinder binder = (IBinder) method.invoke(null, new Object[] { "hardware" });IHardwareService localhardwareservice = IHardwareService.Stub.asInterface(binder);localhardwareservice.setFlashlightEnabled(isEnable);}catch (Exception e){e.printStackTrace();}}

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

    <uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permission android:name="android.permission.HARDWARE_TEST" />  

三、用照相机来控制闪光灯

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

    private Camera camera = null;private Parameters parameters = 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方法:

    private void OpenLightOn()    {if ( null == m_Camera ){m_Camera = Camera.open();    }Camera.Parameters parameters = m_Camera.getParameters();             parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);  m_Camera.setParameters( parameters );           m_Camera.autoFocus( new Camera.AutoFocusCallback (){  public void onAutoFocus(boolean success, Camera camera) {  }                 }); m_Camera.startPreview();      }private void CloseLightOff()   {if ( m_Camera != null ){m_Camera.stopPreview();m_Camera.release();m_Camera = null;}      }

四、结束

测试的时候注意啦,一定要用有闪光灯的手机来测哦,我用三星i9001测试,怎么测都不行,后来才发现人家根本就没有闪光灯,浪费了好多时间,^_^。

上面的程序参考了网上的例子,如果侵犯了您的权利,请通知我。

转载请注明,谢谢。

Android开启闪光灯的几种办法相关推荐

  1. thinkphp开启定时任务的三种办法(最全)

    第一种方法 使用think-cron类库 //composer 安装 composer require yunwuxin/think-cron github文档地址 https://github.co ...

  2. Android注册BroadcastReceiver的两种办法及其区别

    前两篇文章中,对于注册广播机制全部使用的是 AndroidMainFest.xml 注册的,同时,我们还可以在代码中实现注册,这里分别记录了两种方法的使用 1.使用 XML 注册 <receiv ...

  3. android 开启闪光灯(手电筒)

    操作闪光灯(手电筒) private CameraManager mCameraManager;private boolean mTorchAvailable;private String mCame ...

  4. android手电筒项目代码,Android 开启闪光灯做手电筒 源码-Fun言

    权限: 布局 android:layout_width="fill_parent" android:layout_height="fill_parent" an ...

  5. Android 开启闪光灯做手电筒 源码

    权限:<uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permissi ...

  6. java闪光灯手电筒_Android_Android 开启闪光灯做手电筒的详解,复制代码 代码如下:public class H - phpStudy...

    Android 开启闪光灯做手电筒的详解 public class HandLightActivity extends Activity implements OnClickListener{ pri ...

  7. Android 获取光线强弱,开启闪光灯,关闭闪光灯

    1.获取光线强度 (1)实现传感器接口  implements SensorEventListener 实例化 private SensorManager mSensroMgr;//传感器管理类 mS ...

  8. android开启gps功能,android 打开GPS的几种方式

    1.在讨论打开gps的之前先看下如何检测gps的开关情况: 方式一: boolean gpsEnabled = locationManager.isProviderEnabled(LocationMa ...

  9. 0.6闪光灯二进制编码通信android源码手电筒手机密码器频率控制 as4.0版 密码123456 支持所有android2.2到10及以上系统 Android7.0以前和7.0以后开启闪光灯

    演示:0.6闪光灯二进制编码通信android源码手电筒手机密码器频率控制 as4.0版 密码123456.apk http://6.wjsou.com/uploads/1594994912599.a ...

最新文章

  1. 谈一谈安防行业人工智能发展情况
  2. python飞机大战的实训心得体会-python之基础总结(飞机大战)
  3. 导出 C/C++ API 给 Lua 使用[转]
  4. JVM调优之jstack找出最耗cpu的线程并定位代码
  5. 学术诚信的重要性_申论作文开头之诚信
  6. 针对Algorand所使用的密码相关技术细节进行介绍
  7. python-study-17
  8. 自动化调参NNI学习(三):使用python启动NNI框架调整随机森林(RandomForest)模型
  9. 实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序
  10. 转转参数信息服务器,转转登录服务器异常
  11. BZOJ1096-[ZJOI2007]仓库建设
  12. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)
  13. 小米路由器青春版(R1CL)刷breed固件
  14. VOC 2007数据集结构
  15. 关于百度ueditor图片上传到OSS问题解决
  16. Buct oj 1018
  17. 已解决:好用的集成PHP环境 一键安装包PHPNow--Win7下安装phpnow的方法出现[ Apache_pn ] 错误的解决 !(亲自测试通过)
  18. 菲尔兹奖得主埃菲 · 杰曼诺夫全职加入南科大,任职讲席教授
  19. 从量变到质变——AMD打“翻身仗”的秘诀
  20. Python学习笔记:第四站 往哪走

热门文章

  1. 毒霸浏览器 卸载猎豹安全浏览器
  2. 里程计、推算定位与视觉里程计
  3. 为什么零基础转“码”首选软件测试
  4. 自建es集群数据迁移同步到腾讯云
  5. 使用网件无线路由器建立USB共享打印服务器
  6. mysql入门(笔记有两次整理,可以直接找自己要找的东西)
  7. 鸿蒙os bate,鸿蒙os beta版下载
  8. 初学three.js(二)画线条
  9. 使用Matlab2019b生成的音频插件(VSTPlugin)在音频工作站(DAW)中进行测试
  10. git报错Another git process seems to be running in this repository, e.g. an editor opened by ‘git commi