博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Android应用开发攻略》——2.9 简单的手电筒应用程序
阅读量:6408 次
发布时间:2019-06-23

本文共 3286 字,大约阅读时间需要 10 分钟。

2.9 简单的手电筒应用程序

Saketkumar Srivastav

2.9.1 问题
你希望在断电或者其他没有光线的条件下,将智能手机作为手电筒使用。
2.9.2 解决方案
开启智能手机或者Android设备上的相机LED闪光灯,并且保持长亮,以充当手电筒。在术语方面有些纠结,英国将手电筒称作“torch”,而北美称为“flashlight”(这反映在代码中使用的Parameter常量中的名称),尽管手电筒通常不会闪烁(flash),但是相机闪光灯会闪烁,因此,用相机的闪光灯作为手电筒非常好!
2.9.3 讨论
以下是应用开发之前的设计步骤:
1 . 访问手机的Camera对象。
2 . 访问Camera对象的参数。
3 . 获得相机支持的闪光灯模式。
4 . 在ON状态下将闪光灯参数设置为FLASH_MODE_TORCH,在OFF状态下设置为FLASH_OFF。
例2-11中的代码实现了应用程序必需的逻辑。
例2-11:将Android设备转化为手电筒

if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {            mTorch = (ToggleButton) findViewById(R.id.toggleButton1);            mTorch.setOnCheckedChangeListener(new OnCheckedChangeListener() {                @Override                public void onCheckedChanged(CompoundButton buttonView,                    boolean isChecked) {                    try{                        if(cam != null){                            cam = Camera.open();                        }                        camParams = cam.getParameters();                        List
flashModes = camParams.getSupportedFlashModes(); if(isChecked){ if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) { camParams.setFlashMode(Parameters.FLASH_MODE_TORCH); }else{ showDialog(MainActivity.this, FLASH_TORCH_NOT_SUPPORTED); } }else{ camParams.setFlashMode(Parameters.FLASH_MODE_OFF); } cam.setParameters(camParams); cam.startPreview(); }catch (Exception e) { e.printStackTrace(); cam.stopPreview(); cam.release(); } } }); }else{ showDialog(MainActivity.this, FLASH_NOT_SUPPORTED); }

例2-12中实现的基本逻辑如下:

1 . 检查设备中闪光灯是否存在。
2 . 获得Camera对象,并且打开以供访问。
3 . 获得捕捉到的Camera对象的参数。
4 . 用getSupportedFlashModes()检查当前Camera对象所支持的闪光灯模式。
5 . 如果切换状态为ON,将相机闪光灯模式设置为FLASH_MODE_TORCH;否则,设置为FLASH_MODE_OFF。
例2-12:手电筒错误处理

public void showDialog (Context context, int dialogId){        switch(dialogId){        case FLASH_NOT_SUPPORTED:            builder = new AlertDialog.Builder(context);            builder.setMessage("Sorry, Your phone does not support Torch Mode")            .setCancelable(false)            .setNeutralButton("Close", new OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    finish();                }            });            alertDialog = builder.create();            alertDialog.show();            break;        case FLASH_TORCH_NOT_SUPPORTED:            builder = new AlertDialog.Builder(context);            builder.setMessage("Sorry, Your camera flash does not support torch feature")           .setCancelable(false)           .setNeutralButton("Close", new OnClickListener() {               @Override               public void onClick(DialogInterface dialog, int which) {                   finish();               }           });           alertDialog = builder.create();           alertDialog.show();       }}

转载地址:http://dfaea.baihongyu.com/

你可能感兴趣的文章
三个不等_数学一轮复习05,从函数观点看方程与不等式,记住口诀与联系
查看>>
卡尺测量的最小范围_汽车维修工具-测量用具
查看>>
网优5g前景_5G网络优化师前景怎么样?
查看>>
竞态条件的赋值_[译] part25: golang Mutex互斥锁
查看>>
delmatch oracle_完美完全卸载(清除)oracle数据库的方式(方法)
查看>>
pyqt 滚动条 美化_Pyqt5 关于流式布局和滚动条的综合使用示例代码
查看>>
51单机片 编译hex_单片机爬坑记-05-编译环境(完)
查看>>
java 正则表达式 img_Java正则表达式获得html字符串里的<img src=""/> 中的url列表
查看>>
dbutils java_Java篇-DBUtils与连接池
查看>>
java 文件crc校验_一个获取文件crc32校验码的简洁的java类 | 学步园
查看>>
java flatmapfunction_Java8 Stream flatmap中间操作用法解析
查看>>
java rmi spring 4.0_Java Spring RMI一些尝试
查看>>
JAVA怎么连接华为的HDFS系统_JAVA-API操作HDFS文件系统(HDFS核心类FileSystem的使用)...
查看>>
java牛客网四则运算_数据库刷题—牛客网(51-61)
查看>>
Java get set6_JDK6的新特性(转)
查看>>
java发送邮件 不登陆_Java邮件到Exchange Server“不支持登录方法”
查看>>
编程学习初体验(5. 如何自学编程)(2)
查看>>
思科ISR G1与ISR G1C的区别
查看>>
利用perl提取web配置文件中的域名对应的路径
查看>>
Centos5上安装JRE和LUMAQQ
查看>>