一、控制硬件的情節
早在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" />