您当前的位置: 首页 > 

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

安卓开发手电筒应用(打开或关闭闪光灯)

蓝不蓝编程 发布时间:2020-08-06 20:06:14 ,浏览量:0

用途

打开或关闭闪光灯,用于手电筒应用.

主要代码
object FlashUtils {
    private lateinit var manager: CameraManager
    private lateinit var mCamera: Camera
    private lateinit var mContext: Context
    private var status = false //记录手电筒状态
    fun init(context: Context) {
        mContext = context
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            manager = mContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
        }
    }

    //打开手电筒
    fun open() {
        if (status) { //如果已经是打开状态,不需要打开
            return
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                manager.setTorchMode("0", true)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        } else {
            val packageManager = mContext.packageManager
            val features = packageManager.systemAvailableFeatures
            for (featureInfo in features) {
                if (PackageManager.FEATURE_CAMERA_FLASH == featureInfo.name) { // 判断设备是否支持闪光灯
                    val parameters = mCamera.parameters
                    parameters.flashMode = Camera.Parameters.FLASH_MODE_TORCH
                    mCamera.parameters = parameters
                    mCamera.startPreview()
                }
            }
        }
        status = true //记录手电筒状态为打开
    }

    //关闭手电筒
    fun close() {
        if (!status) { //如果已经是关闭状态,不需要打开
            return
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                manager.setTorchMode("0", false)
            } catch (e: CameraAccessException) {
                e.printStackTrace()
            }
        } else {
            mCamera.stopPreview()
            mCamera.release()
        }
        status = false //记录手电筒状态为关闭
    }
}

调用代码:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        FlashUtils.init(this)
        flashSwitch.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                FlashUtils.open()
            } else {
                FlashUtils.close()
            }
        }
    }
}
源代码

https://gitee.com/cxyzy1/flashlight

安卓开发入门教程系列汇总 安卓发展历程及前景

安卓发展历程 安卓开发前景展望

初探安卓

安装开发工具 创建第一个安卓工程

开发语言学习

Kotlin语言基础

UI控件学习系列 UI控件_TextView UI控件_EditText UI控件_Button UI控件_ImageView UI控件_RadioButton UI控件_CheckBox UI控件_ProgressBar

关注头条号,第一时间获取最新文章:

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0759s