如何实现Android Studio简易手电筒的闪烁和报警功能

如何实现Android Studio简易手电筒的闪烁和报警功能,第1张

要打开手电筒功能,需要判磨闭掘裂在AndroidManifest.xml增加摄像头、闪光灯使用权限:

<!-- 打开照相机权限 -->

<uses-permission android:name="android.permission.CAMERA" />

<!-- 打开闪光灯权限 -->

<uses-permission android:name="android.permission.FLASHLIGHT" />

开手电筒java代码:

Camera camera = Camera.open()

Camera.Parameters myParameters = camera.getParameters()

myParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH)

camera.setParameters(myParameters)

关手电筒java代码:

Camera camera = Camera.open()

Camera.Parameters myParameters = camera.getParameters()

myParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF)

camera.setParameters(myParameters)

报警声,游如就是播放音乐就行了,文件篇幅有限,不能一一解释,可追问。

1.控制手电筒开关的工具类:

public class FlashUtils {

    private CameraManager manager

    private Camera mCamera = null

    private Context context

    private boolean status = false//记录手电筒状态

   笑雹 FlashUtils(Context context){

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

            manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE)

        }

        this.context = context

    }

    //打开手电筒

    public void open() {

        if(status){//如果已经是打开状态,不需要打开

            return

        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            try {

                manager.setTorchMode("0", true)

            } catch (Exception e) {

                e.printStackTrace()

            }

        } else {

            PackageManager packageManager = context.getPackageManager()

            FeatureInfo[] features = packageManager.getSystemAvailableFeatures()

            for (FeatureInfo featureInfo : features) {

                if (PackageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) { // 判断设备是否支持闪光灯

                    if (null == mCamera) {

                        mCamera = Camera.open()

                    }

                    Camera.Parameters parameters = mCamera.getParameters()

                    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH)

                   中升粗 mCamera.setParameters(parameters)

                    mCamera.startPreview()

 卖镇               }

            }

        }

        status = true//记录手电筒状态为打开

    }

    //关闭手电筒

    public void close() {

        if(!status){//如果已经是关闭状态,不需要打开

            return

        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            try {

                manager.setTorchMode("0", false)

            } catch (CameraAccessException e) {

                e.printStackTrace()

            }

        } else {

            if (mCamera != null) {

                mCamera.stopPreview()

                mCamera.release()

                mCamera = null

            }

        }

        status = false//记录手电筒状态为关闭

    }

    //改变手电筒状态

    public void converse(){

        if(status){

            close()

        }else{

            open()

        }

    }

}

2.使用方法:

FlashUtils utils = new FlashUtils(this)

        utils.open()//打开手电筒

//        utils.close()//关闭手电筒

3.示例程序已上传:

https://github.com/wkxjc/FlashlightStudy

通过小程序组件 <camera> 中的 flash 属性的控制实现后置闪光灯的打开与关闭

注意:mode="scanCode" 只有扫码模式才能准确档嫌控制闪光行烂手灯的开关

1.因防止打开子页面加载摄像头会延迟卡顿,所以暂时通过 showCamera 进入页面不立即进行加载,提升流历型畅度。

2.切换开关控制


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12505583.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存