繼iphone的手電筒開發完成後,接下來我便著手開始Android如何製作手電筒的程式
我的跨平台引擎架構CloudBox已建立好iphone版的程式,但卻對於Android上如何操控閃光燈一無所知
因此我做了個小範例示範如何用Android來控制閃光燈
此代碼在Samsung Galaxy S2測試可運作
public class CloudLed {boolean m_isOn;Camera m_Camera;public boolean getIsOn() { return m_isOn; }public CloudLed(){m_isOn = false;}public void turnOn(){if(!m_isOn){m_isOn = true;try{m_Camera = Camera.open();Camera.Parameters mParameters;mParameters = m_Camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);m_Camera.setParameters(mParameters);}catch(Exception ex){}}}public void turnOff(){if(m_isOn){m_isOn = false;try{Camera.Parameters mParameters;mParameters = m_Camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);m_Camera.setParameters(mParameters);m_Camera.release();}catch(Exception ex){}}}}
我建立了一個CloudLed類,將Camera再做一次封裝,只處理閃光燈相關部份的代碼
在Android中,要開啟網路攝影機只需透過Camera.Open就可以簡單開啟,開啟後取得Camera.Parameters就可以設定參數
我們所需要的手電筒功能,只需要將其設為FLASH_MODE_TROCH即可
關閉時只要設定為FLASH_MODE_OFF後將其release就可以了
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.clouddevelop.ledtest" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".LEDTestActivity" android:label="@string/app_name" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.CAMERA"></uses-permission></manifest>
在這邊有個事項要注意,我們需在AndroidManifest.xml中設定存取網路攝影機的許可權。
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
完整範例下載