android通過led實(shí)現(xiàn)手電筒功能
本文實(shí)例為大家分享了android通過led實(shí)現(xiàn)手電筒功能的具體代碼,供大家參考,具體內(nèi)容如下
第一步 添加權(quán)限:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.flash" />
第二步 實(shí)現(xiàn)手電筒工具類:
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.AsyncTask;
/**
*Caution: On some devices, this method may take a long time to complete. It is best
*to call this method from a worker thread (possibly using android.os.AsyncTask) to
*avoid blocking the main application UI thread.
*/
public class FlashlightUtil extends AsyncTask<String, String, String> {
private Camera camera;
private int cameraId = 0; // 此功能目前不實(shí)用,這里不做實(shí)現(xiàn) , 但不能刪除
private Parameters parameters;
public boolean isTorch = false;
private boolean canFinish = false;
private static FlashlightUtil flashlightUtil;
private FlashlightUtil() {
}
/**
* 設(shè)置手電筒開關(guān),打開或關(guān)閉手電筒,根據(jù)手電筒的狀態(tài)來設(shè)置相反的狀態(tài) void 2016年1月12日
*/
public static void setSwitch() {
if (null == flashlightUtil) {
flashlightUtil = new FlashlightUtil();
flashlightUtil.execute("");
}
flashlightUtil.setONOFF();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
while (!canFinish) {
if (null == camera) {
camera = Camera.open(cameraId);
}
parameters = camera.getParameters();
if (isTorch) {
if (parameters.getFlashMode().equals(Parameters.FLASH_MODE_OFF)) {
// 打開鎂光燈
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();
}
} else {
if (parameters.getFlashMode().equals(
Parameters.FLASH_MODE_TORCH)) {
// 關(guān)閉鎂光燈
camera.stopPreview(); // 關(guān)掉亮燈
camera.release(); // 關(guān)掉照相機(jī)
camera = null;
}
}
}
return null;
}
/**
* 此功能暫時(shí)關(guān)閉
* @hide
*/
public FlashlightUtil setCameraId(int cameraId) {
this.cameraId = cameraId;
return flashlightUtil;
}
/**
* 打開關(guān)閉手電筒,默認(rèn)第一次為打開 2016年1月12日
*/
private void setONOFF() {
isTorch = !isTorch;
}
}
第三步 添加手電筒按鈕的觸發(fā)事件(這里是在布局文件中通過onclick實(shí)現(xiàn)的)
/**
* 打開手電筒
*/
public void openFlashlight(View view) {
FlashlightUtil.setSwitch() ;
}
手電筒功能比較簡單,這里實(shí)現(xiàn)了一步開啟關(guān)閉。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android浮層圖片拖動(dòng)并且可點(diǎn)擊效果
這篇文章主要為大家詳細(xì)介紹了android浮層的圖片拖動(dòng)并且可點(diǎn)擊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android Studio實(shí)現(xiàn)簡單的QQ登錄界面的示例代碼
這篇文章主要介紹了Android Studio實(shí)現(xiàn)簡單的QQ登錄界面的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Android模仿實(shí)現(xiàn)微博詳情頁滑動(dòng)固定頂部欄的效果實(shí)例
這篇文章主要給大家介紹了關(guān)于利用Android模仿實(shí)現(xiàn)微博詳情頁滑動(dòng)固定頂部欄效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Android實(shí)現(xiàn)打開本地pdf文件的兩種方式
在現(xiàn)代應(yīng)用中,PDF格式因其跨平臺、穩(wěn)定性好、展示內(nèi)容一致等特點(diǎn),在Android平臺上,如何高效地打開本地PDF文件,不僅關(guān)系到用戶體驗(yàn),也直接影響到應(yīng)用的功能豐富度,本文將給大家詳細(xì)介紹了Android打開本地pdf文件的兩種方式,需要的朋友可以參考下2025-04-04
Android UI控件RatingBar實(shí)現(xiàn)自定義星星評分效果
這篇文章主要為大家詳細(xì)介紹了Android UI控件RatingBar實(shí)現(xiàn)自定義星星評分效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android實(shí)現(xiàn)閱讀APP平移翻頁效果
這篇文章主要介紹了Android實(shí)現(xiàn)閱讀APP平移翻頁效果的具體方法,模仿多看閱讀平移翻頁,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03

