我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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://mswzjz.cn/article/dsepeoj.html

其他资讯