android 9.0 獲取手電筒狀態(tài)以及打開/關(guān)閉手電筒

查了很多資料,其他博客大多都是介紹以前的的方案,基于9.0系統(tǒng)的基本沒有找到,要么就不全,特別是獲取手電筒狀態(tài)的資料,下面就大致介紹一下:

打開和關(guān)閉的方法是:toggleLight
獲取手電筒狀態(tài)的通過回調(diào)方法:mTorchCallback(這就是為什么進(jìn)入頁面就需要注冊該回調(diào))

    private CameraManager mCameraManager;
    public void initData() {
    //ivFlashlight是界面上的imageview控件
    ivFlashlight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                toggleLight(!isFlashLightOn);
            }
        });
        //獲取CameraManager
        if(mCameraManager == null){
            mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        }
        mCameraManager.registerTorchCallback(mTorchCallback, null);
    }
    //callback成員變量初始化
    private CameraManager.TorchCallback mTorchCallback = new CameraManager.TorchCallback() {
        @Override
        public void onTorchModeChanged(@NonNull String cameraId, boolean enabled) {
            super.onTorchModeChanged(cameraId, enabled);
            Log.e(TAG, "onTorchModeChanged cameraId=" + cameraId + ";enabled=" + enabled);
            isFlashLightOn = enabled;
            ivFlashlight.setIcon(enabled ? MaterialDrawableBuilder.IconValue.FLASHLIGHT : MaterialDrawableBuilder.IconValue.FLASHLIGHT_OFF);
        }
    };
    public void toggleLight(boolean OPEN) {
        try {
            //獲取當(dāng)前手機(jī)所有攝像頭設(shè)備ID
            String[] ids = mCameraManager.getCameraIdList();
            for (String id : ids) {
                CameraCharacteristics c = mCameraManager.getCameraCharacteristics(id);
                //查詢該攝像頭組件是否包含閃光燈
                Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);

                /*
                 * 獲取相機(jī)面對的方向
                 * CameraCharacteristics.LENS_FACING_FRONT 前置攝像頭
                 * CameraCharacteristics.LENS_FACING_BACK 后只攝像頭
                 * CameraCharacteristics.LENS_FACING_EXTERNAL 外部的攝像頭
                 */
                Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
                if (flashAvailable != null && flashAvailable
                        && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
                    //打開或關(guān)閉手電筒
                    mCameraManager.setTorchMode(id, OPEN);
                    break;
                }
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mCameraManager != null && mTorchCallback != null){
            mCameraManager.unregisterTorchCallback(mTorchCallback);
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,663評論 1 32
  • 0參考代碼 藍(lán)牙(BLE)模塊及協(xié)議.pdf:在電腦內(nèi),有助于理解ble BLE藍(lán)牙在Android開發(fā)中的應(yīng)用 ...
    kamin閱讀 3,547評論 0 20
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,314評論 0 15
  • 提取碼: 安裝與配置 下載地址manjaro 使用rufus刻錄鏡像至u盤 生成可用中國鏡像站列表 選擇清華源 刷...
    CongCo閱讀 62,149評論 34 104
  • 前一陣子,朋友圈里看到一篇文章《要不要多生個孩子,先靈魂拷問自己這三個問題》,提出生二胎甚至三胎前必須考慮清楚的三...
    愛心樹A閱讀 499評論 0 1

友情鏈接更多精彩內(nèi)容