蓝牙开发遇到几个问题

原创 2018年04月16日 16:38:23
1.有些手机无法搜索的设备名
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
//有些手机扫描不到设备名称,只有在scanRecord里才有这些名字信息  test假定是我们关键字,然后我们名称是固定长度就可以截取出来了
String tmpName=new String(scanRecord);
LOG.i(TAG, "scanRecord 里的值:"+tmpName );
if(tmpName.contains("test")){
try {
String deviceName=tmpName.substring(tmpName.indexOf("test"),tmpName.indexOf("test")+13);
}catch (Exception e){
e.printStackTrace();
}
}
}


2. 6.0以上的蓝牙手机需要开启定位可以搜索到设备
权限ACCESS_COARSE_LOCATION


3.手机蓝牙在打开的时候可能是在自己搜索蓝牙设备,导致我们第一次去搜索蓝牙设备都搜不到,这个我时候我采用
首先如果蓝牙没打开,就先打开蓝牙
延迟两秒再执行
mBluetoothAdapter.stopLeScan(callback);

mBluetoothAdapter.startLeScan(callback);


4. vivo  X20A还必须得有

android.permission.BLUETOOTH_PRIVILEGED  

5.0以上系统静默开启蓝牙需要这个操作,不然会出现E/BluetoothAdapter: startLeScan: cannot get BluetoothLeScanner


5.华为荣耀3c 手机 蓝牙连接  出现过一次   搜索不到蓝牙设备,厂商提供搜索工具也搜索不到,其他手机打开蓝牙可以搜索到该设备,打开蓝牙开发检测后就可以了,再关闭蓝牙检测也可以,再也无法复现了



6.打开蓝牙三种方式

隐形打开(在5.0以上需要支持android.permission.BLUETOOTH_PRIVILEGED  有些手机比如Vivo拒绝后可能一直打开不了)

而且大部分手机如果隐式打开,还是会提示,所以还不如干脆直接显式打开,兼容性会更好

BluetoothManager mBluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter();
mBluetoothAdapter.enable();

显性打开(最好是在UI里有做提示用户来打开,这样对用户和兼容性比较好,太多自定义系统在权限那块兼容不太好)

//会弹出系统对话框,提示用户是否允许蓝牙设备对其他设备的可见性
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120);//可被发现的持续时间
startActivity(intent);

//会弹出一个对话框,提示用户是否允许打开蓝牙
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBtIntent);

//打开系统蓝牙界面
Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(intent);

遇到几个问题

1. 指针问题(好难描述这个问题了)如下一段代码: (A)AdsPlayList playList;// 这个类中有一个 std::vector 对象,存放一系列的指针 (A)playList.loa...
  • kofsky
  • kofsky
  • 2008年04月28日 16:53
  • 448

Android蓝牙开发中遇到的问题

今天在学习有关蓝牙的通信方面的知识,参考了网上的一些蓝牙开发的一些代码自己写了个手机蓝牙通讯的代码 做成了一个聊天的效果,两手机通过蓝牙互发信息来练习蓝牙方面的知识,在实践中遇到了一个很棘手的问题,...
  • u013454746
  • u013454746
  • 2015年01月16日 23:43
  • 814

Android ble蓝牙4.0开发遇到的问题及解决方法

1、蓝牙传送数据报文长的问题 由于ble蓝牙一次只能发送20字节报文,如果需要超过20字节的报文,就需要采用分包机制分两包或多包收发。 2、开发中出现app端同时向蓝牙服务端设备发送多个接口请求的...
  • wusj3
  • wusj3
  • 2017年11月28日 13:59
  • 224

android 传统蓝牙开发 (附示例源码)

1、获得BluetoothAdapter; 2、询问用户打开蓝牙(推荐)或直接bluetoothAdapter.enable(); 3、查询已绑定设备,发现新设备; 4.1、服务端,监听请求; 4.2...
  • Qiao_Jim
  • Qiao_Jim
  • 2017年06月10日 22:23
  • 3939

[BT_Books]《低功耗蓝牙开发权威指南》笔记(待续)

简述这本书出自CSR蓝牙协议架构师,是蓝牙领域大牛的作品,不过总体看来本书还是比较简单的。综述基本概念蓝牙理念低功耗的基本理念就是连接是瞬态的,当你需要做某件事或者检查情况时,可以快速创建一个连接,完...
  • suxiang198
  • suxiang198
  • 2015年09月15日 19:52
  • 1956

安卓低功耗蓝牙开发

近几日做了些安卓低功耗蓝牙的项目,主要是用了北欧半导体公司的板子。不过对于安卓上位机来说,是哪家公司的板子,差别并不是很大。 刚开始对蓝牙不是很了解,找了NordicSemiconducto...
  • will4906
  • will4906
  • 2016年11月05日 02:24
  • 2424

05-iOS蓝牙开发总结

蓝牙开发总结 只要熟悉蓝牙的流程,和蓝牙中每一个角色的作用,其实蓝牙通讯并没有想象中的难 1.蓝牙中心CBCentralManager:一般指得是iPhone手机 2.设备(外设)CBPeriphe...
  • u013263917
  • u013263917
  • 2017年02月13日 01:44
  • 721

蓝牙开发工具(转载)

WDS     WDS是Silicon Wave公司的蓝牙无线通信开发工具,它是一个软件和硬件组合的工具,包括SiW1502无线调制解调IC、SiW1602链接控制器IC和底层蓝牙协议软件,是一个灵活...
  • vickyjoe
  • vickyjoe
  • 2007年08月08日 20:17
  • 613

Pytorch遇到的几个问题

本文主要记录一下使用pytorch几个问题 问题一 ImportError: No module named torchvision torchvison:图片、视频数据和深度学习模型 解决方案 安...
  • u010498986
  • u010498986
  • 2017年05月05日 16:56
  • 7278

试题遇到的几个问题

1、同步与异步,区别,使用情况 2、java堆内存栈内存如何分配 3、TCP三次握手 4、链表 5、消费者模式...
  • jifengjinsong
  • jifengjinsong
  • 2014年03月19日 13:57
  • 275
收藏助手
不良信息举报
您举报文章:蓝牙开发遇到几个问题
举报原因:
原因补充:

(最多只允许输入30个字)