Android开启闪光灯的几种办法
一、控制硬件的情节
早在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开启闪光灯的几种办法相关推荐
- thinkphp开启定时任务的三种办法(最全)
第一种方法 使用think-cron类库 //composer 安装 composer require yunwuxin/think-cron github文档地址 https://github.co ...
- Android注册BroadcastReceiver的两种办法及其区别
前两篇文章中,对于注册广播机制全部使用的是 AndroidMainFest.xml 注册的,同时,我们还可以在代码中实现注册,这里分别记录了两种方法的使用 1.使用 XML 注册 <receiv ...
- android 开启闪光灯(手电筒)
操作闪光灯(手电筒) private CameraManager mCameraManager;private boolean mTorchAvailable;private String mCame ...
- android手电筒项目代码,Android 开启闪光灯做手电筒 源码-Fun言
权限: 布局 android:layout_width="fill_parent" android:layout_height="fill_parent" an ...
- Android 开启闪光灯做手电筒 源码
权限:<uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permissi ...
- java闪光灯手电筒_Android_Android 开启闪光灯做手电筒的详解,复制代码 代码如下:public class H - phpStudy...
Android 开启闪光灯做手电筒的详解 public class HandLightActivity extends Activity implements OnClickListener{ pri ...
- Android 获取光线强弱,开启闪光灯,关闭闪光灯
1.获取光线强度 (1)实现传感器接口 implements SensorEventListener 实例化 private SensorManager mSensroMgr;//传感器管理类 mS ...
- android开启gps功能,android 打开GPS的几种方式
1.在讨论打开gps的之前先看下如何检测gps的开关情况: 方式一: boolean gpsEnabled = locationManager.isProviderEnabled(LocationMa ...
- 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 ...
最新文章
- 谈一谈安防行业人工智能发展情况
- python飞机大战的实训心得体会-python之基础总结(飞机大战)
- 导出 C/C++ API 给 Lua 使用[转]
- JVM调优之jstack找出最耗cpu的线程并定位代码
- 学术诚信的重要性_申论作文开头之诚信
- 针对Algorand所使用的密码相关技术细节进行介绍
- python-study-17
- 自动化调参NNI学习(三):使用python启动NNI框架调整随机森林(RandomForest)模型
- 实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序
- 转转参数信息服务器,转转登录服务器异常
- BZOJ1096-[ZJOI2007]仓库建设
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)
- 小米路由器青春版(R1CL)刷breed固件
- VOC 2007数据集结构
- 关于百度ueditor图片上传到OSS问题解决
- Buct oj 1018
- 已解决:好用的集成PHP环境 一键安装包PHPNow--Win7下安装phpnow的方法出现[ Apache_pn ] 错误的解决 !(亲自测试通过)
- 菲尔兹奖得主埃菲 · 杰曼诺夫全职加入南科大,任职讲席教授
- 从量变到质变——AMD打“翻身仗”的秘诀
- Python学习笔记:第四站 往哪走
热门文章
- 毒霸浏览器 卸载猎豹安全浏览器
- 里程计、推算定位与视觉里程计
- 为什么零基础转“码”首选软件测试
- 自建es集群数据迁移同步到腾讯云
- 使用网件无线路由器建立USB共享打印服务器
- mysql入门(笔记有两次整理,可以直接找自己要找的东西)
- 鸿蒙os bate,鸿蒙os beta版下载
- 初学three.js(二)画线条
- 使用Matlab2019b生成的音频插件(VSTPlugin)在音频工作站(DAW)中进行测试
- git报错Another git process seems to be running in this repository, e.g. an editor opened by ‘git commi