Android开启闪光灯的几种办法

               

一、控制硬件的情节

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

二、用IHardwareService直接控制

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

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

package android.os;/** {@hide} */interface IHardwareService{    // obsolete flashlight support    boolean 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测试,怎么测都不行,后来才发现人家根本就没有闪光灯,浪费了好多时间,^_^。

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

转载请注明,谢谢。




           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值