安卓开发手电筒应用(打开或关闭闪光灯)
发布日期:2021-06-29 18:30:08
浏览次数:2
分类:技术文章
本文共 2335 字,大约阅读时间需要 7 分钟。
用途
打开或关闭闪光灯,用于手电筒应用.
主要代码
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() } } }}
源代码
安卓发展历程及前景
初探安卓
开发语言学习
UI控件学习系列
关注头条号,第一时间获取最新文章:
转载地址:https://cxyxy.blog.csdn.net/article/details/107844713 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月10日 13时43分05秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
keepalived+HAproxy高可用动静分离负载均衡
2019-04-30
Atlas代理MySQL读写分离
2019-04-30
为什么JavaScript是单线程?
2019-04-30
前端部分面试题 以及答案
2019-04-30
数组去重,数组截取,数组翻转元素,迭代器
2019-04-30
html中的常见事件
2019-04-30
什么是闭包
2019-04-30
vue.js中var let const区别
2019-04-30
如何将伪数组转为一个数组
2019-04-30
vue.js中如何填充数据
2019-04-30
通过vue里的list,在网页显示信息,methods获取随机年龄,remove删除信息
2019-04-30
v-show v-else ,v-once ,radio 方法的使用
2019-04-30
使用vue实现简易购物车功能(功能暂未完善,有的功能没实现)。待更新
2019-04-30
使用vue.js实现跑马灯效果
2019-04-30
使用vue实现分页
2019-04-30
vue创建组件的两种方式
2019-04-30
vue的一生(中文版)一部分
2019-04-30
vue中子组件像父组件传值
2019-04-30
vue动画实现飞入购物车功能
2019-04-30