资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android扫描,Android扫描二维码

Android实现二维码扫描功能

1.//依赖注入

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了光泽免费建站欢迎大家使用!

2.根据生命周期来对业务逻辑进行处理

1.布局的声明

2.Activity生命周期来处理业务逻辑

3.手机震动方法处理(在扫描成功的方法中调用此方法就可以了)

private void vibrate() {

Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

vibrator.vibrate(200);

}

Android WiFi扫描

Wifi scanning overview

必须权限如下:

除必须权限外,根据系统版本,还有不同的限制。具体如下

WifiManager.getScanResults() 方法的调用必须具备以下 任一 权限:

否则会抛异常 SecurityException 。

WifiManager.startScan() 方法的调用必须满足以下 所有 条件:

否则会抛异常 SecurityException 。

Android对 WifiManager.startScan() 的调用频率进行了限制。对于超过此频率的接口访问, WifiManager 不会执行完整扫描,而是提供上次扫描所缓存的结果。

平均值:2211

wifi扫描有两个必须权限:

另外,随着Android系统的升级,对WiFi扫描做了越来越严格的限制。系统对 WifiManager.getScanResults() 和 WifiManager.startScan() 所做的限制不太一样,但若要实现一个完整的WiFi扫描,就需要“扫描+获取”两个步骤,因此综合来看,WiFi扫描的行为变化如下:

需要同时满足以下所有条件:

font color='red'注意:以上是官方文档的说明,与实际测试的结果有出入,可能是手机厂商修改rom导致。/font

(小米MIX2 8.0,三星N9600 8.1.0下,不开定位服务也能获取到WiFi列表)

Android蓝牙扫描

蓝牙扫描的目的在于发现设备或者接收设备广播,设备包括经典蓝牙设备和BLE蓝牙设备,这两种设备的扫描方式不同。

对于经典蓝牙设备,扫描是通过调用startDiscovery接口,返回的结果是通过BroadcastReceiver接收的,可以获取设备MAC地址,名称以及RSSI。

startDiscovery是个异步调用,会立即返回。如果不调用cancelDiscovery主动停止扫描的话,最多扫描12s。

广播主要监听以下几个Action:

BluetoothDevice.ACTION_FOUND

BluetoothAdapter.ACTION_DISCOVERY_STARTED

BluetoothAdapter.ACTION_DISCOVERY_FINISHED

另外要注意startDiscovery返回的设备不包括已配对设备,如要获取已配对设备,需要额外调用getBondedDevices。

对于BLE蓝牙设备,扫描是通过调用startLeScan接口,返回的结果是通过onLeScan回调,除了获得设备MAC地址,名称及RSSI之外还能获取设备广播,广播是以byte数组的形式表示的。

较新的Android版本提供了新的扫描接口,可更灵活地配置扫描策略,详情可参考官网文档,此处不再赘述。

一,需要打开以下权限

android.permission.BLUETOOTH

android.permission.ACCESS_COARSE_LOCATION

android.permission.BLUETOOTH_ADMIN

android.permission.ACCESS_FINE_LOCATION

另外还要注意动态权限问题,在Android 6.0(targetSdkVersion=23)之后,需要动态申请获取用户位置的权限,不然获取不到设备扫描结果。

二,startDiscovery在大多数手机上是可以同时发现经典蓝牙和Ble的,但是startDiscovery的回调无法返回BLE的广播,所以无法通过广播识别设备,且startDiscovery扫描BLE的效率比startLeScan低很多。所以在实际应用中,还是startDiscovery和startLeScan分开扫,前者扫经典蓝牙,后者扫低功耗蓝牙。

三,startLeScan() 的时候,在onLeScan() 中不能做耗时操作,特别是周围的BLE设备多的时候,容易导致底层堵塞,如果有耗时操作请丢到子线程中去处理。如解析广播识别设备等操作可能会较耗时。

四,实践中发现同样一个设备,有的手机很容易就扫出来了,有的手机很难扫出来。这种情况建议可以多扫几次,每次扫描时间短一点。


本文名称:android扫描,Android扫描二维码
当前地址:http://cdkjz.cn/article/dsepeoj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220