商务服务
二维码快速扫码优化方案介绍(一)--怎么在光线不足时,手机自动进行补光。
2024-12-26 03:11

二维码扫码已经是一个很通用的技术了,也有很多的开源项目可以实现,比如Zxing项目。https://github.com/zxing

这里重点不是介绍Zxing中是怎么样来实现二维码扫码的,而是来介绍一下,微信上的快速扫码技术是如何来做到优化体验的。

要实现在光线不足时,手机自动进行补光,其实很简单,每个人都知道,手机上有很多的传感器,其中有一个很重要的传感器就是光线传感器。

这个大家平时在拍照的时候,都用到过。那么如何能把这个应用到二维码的扫码体验上来呢。

我们可以利用手机的光线传感器进行外部光线感应,到光线很暗时,那么就可以自动进行补光了。这里我们以安卓手机为例,进行说明

在安卓手机中,我们定义一个Button和一个TextView,TextView用来显示从光线传感器中接收到的光线强度指数。Button按钮用于当光线较弱时,自动出来这个Button按钮,可以点击打开手机的闪光灯。当光线较强时,自动隐藏该Button按钮。

<?xml version="1.0" encoding="utf-8"?>
<frameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
.......
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="补光"
android:id="@+id/flashLightButton"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ligthSensorView"
android:layout_below="@+id/flashLightButton"
android:layout_centerHorizontal="true"
android:layout_marginTop="92dp" />
</RelativeLayout>
</frameLayout>
在Activity中,我们定义一下上面的Button和TextView
//补光Button
private Button flashLightButton;
//显示出当前的光线强度
private TextView ligthSensorView;
//光线传感器相关
private SensorManager sm;
private Sensor ligthSensor;
flashLightButton  = (Button) findViewById(R.id.flashLightButton);
ligthSensorView = (TextView) findViewById(R.id.ligthSensorView);
//光线传感器使用注册
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
ligthSensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
sm.registerListener(new MySensorListener(), ligthSensor, SensorManager.SENSOR_DELAY_NORMAL);
//设置Button监听
flashLightButton.setonClickListener(new flashLightListener());

//flashLightButton的监听实现
class flashLightListener implements View.OnClickListener{
Boolean isopen = false;
@Override
public void onClick(View view) {
if(isopen){
//关灯
CameraManager.get().closeFlashlight();
isopen = false;
}
else{
//开灯
CameraManager.get().openFlashlight();
isopen = true;
}
}
}
//传感器监听
public class MySensorListener implements SensorEventListener {

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

//获取光线的强度
public void onSensorChanged(SensorEvent event) {
//获取精度
float acc = event.accuracy;
//获取光线强度
float lux = event.values[0];
sb = "精度:"+acc+",光线强度:"+lux+"摄像头模式:";
//光线强度展示在ligthSensorView上

ligthSensorView.setText(sb);
int retval = Float.compare(lux, (float) 10.0);
if(retval>0){
//光线强度>10.0隐藏Button
flashLightButton.setVisibility(View.INVISIBLE);
}
else {
//显示Button
flashLightButton.setVisibility(View.VISIBLE);
}
}
}
//通过camera的方式开启闪光灯
public static void turnLightonCamera(Camera mCamera) {
mCamera.startPreview();
Camera.Parameters parameters = mCamera.getParameters();
List<String> flashModes = parameters.getSupportedFlashModes();
String flashMode = parameters.getFlashMode();
if (!Camera.Parameters.FLASH_MODE_TORCH.equals(flashMode)) {
// 开启闪光灯
if (flashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
isOpenFlash = true;
}
}
}
//通过camera的方式关闭闪光灯
public static void turnLightOffCamera(Camera mCamera) {
mCamera.stopPreview();
Camera.Parameters parameters = mCamera.getParameters();
List<String> flashModes = parameters.getSupportedFlashModes();
String flashMode = parameters.getFlashMode();
if (!Camera.Parameters.FLASH_MODE_OFF.equals(flashMode)) {
// 关闭闪光灯
if (flashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
}
}
isOpenFlash = false;
}
    以上就是本篇文章【二维码快速扫码优化方案介绍(一)--怎么在光线不足时,手机自动进行补光。】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/9861.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
运营师抖音代运营
运营师抖音代运营:掌握流行短视频潮流的神奇职业短视频平台已经成为人们娱乐、学习和社交的重要方式。在众多的短视频平台中,抖
微短剧,2024年“最大赢家”? | 年终盘点
2024,短剧行业大变样。作者 | 张语格编辑 | 趣解商业文娱组“互联网大厂争相入局。”“98%的短剧制作方都在亏钱。”“用户被免
同类第一!20%弹性的人工智能 ETF 科创(588760)今日上市,一键布局科创板优质AI龙头
  最新公告内容显示,广发上证科创板交易型开放式指数投资基金(基金代码:588760;扩位简称: ETF 科创)已于 2025 年 1 月 1
如何使用关键词排名提升工具
随着互联网的飞速发展,自媒体行业逐渐成为热门领域,许多自媒体作者希望通过优质内容吸引更多粉丝,提高自己的知名度,在众多竞
2025快手广告跳转微信如何实现?配置详解
​​快手作为中国领先的短视频平台,拥有庞大的用户基础和高度的用户活跃度,为品牌提供了一个巨大的流量池。然而,如何将这些流
Tiktok专题
随着TikTok在全球范围内的爆发式增长,越来越多的品牌和企业开始关注这个平台,并寻找适合他们的产品来进行市场推广。想要在TikT
什么兼职最赚钱最快速?盘点适合负债者的10个副业
在当下经济环境下,许多人可能面临负债的压力,包括买房、买车等等,寻找一份能够快速赚钱的兼职成为了许多人的迫切需求。那么,
Google回击设计_今日google搜索Google设计教程
摘要:Google回击设计,今日google搜索Google设计教程,新片场素材小编舒子颖Google回击设计,今日google搜索Google设计教程相关内
关键词排名上不去怎么办(关键词排名靠前原因)
本文目录导读:关键词选择外链建设持续优化注意事项随着自媒体行业的不断发展,越来越多的创作者加入了这个大家庭,在激烈的竞争
A股市场昨有所回落 小红书概念股继续走强
每经记者:杨建    每经编辑:赵云1月14日,A股市场全天高开高走,三大指数放量大涨。1月15日,A股市场有所回落。截至收盘,