‘壹’ 苹果耳机和安卓手机蓝牙连接不上是怎么回事
1、以下以手机和蓝牙耳机再次连接步骤如下:
(1)使蓝牙耳机在开机状态,需要长按蓝牙耳机的开关键5秒左右。
(2)直到指示灯:蓝灯红灯交替闪烁再松开。
(3)这个时候蓝牙耳机和手机会再次的进入匹对状态。
(4)等手机上面显示蓝牙耳机后,点击确定即可连接。
(5)注意手机和蓝牙耳机的有效距离在10米内。
2、排除本身就不能配对成功的情况,如果曾经配对成功过,然后点选了忽略设置,那么摁住蓝牙设备上的蓝族友牙按钮,摁住不放5-6秒钟,就能重新被设备搜索到了。
(1)android搜索不到蓝牙设备扩展阅读:
蓝牙(Bluetooth®):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。
通讯连接
蓝牙主设备最多可与一个微微网(一个差备采用蓝牙技术的临时计算机兆庆槐网络)中的七个设备通讯, 当然并不是所有设备都能够达到这一最大量。
设备之间可通过协议转换角色,从设备也可转换为主设备(比如,一个头戴式耳机如果向手机发起连接请求,它作为连接的发起者,自然就是主设备,但是随后也许会作为从设备运行。)
蓝牙核心规格提供两个或以上的微微网连接以形成分布式网络,让特定的设备在这些微微网中自动同时地分别扮演主和从的角色。
数据传输可随时在主设备和其他设备之间进行(应用极少的广播模式除外)。
主设备可选择要访问的从设备;典型的情况是,它可以在设备之间以轮替的方式快速转换。因为是主设备来选择要访问的从设备,理论上从设备就要在接收槽内待命,主设备的负担要比从设备少一些。主设备可以与七个从设备相连接,但是从设备却很难与一个以上的主设备相连。
规格对于散射网中的行为要求是模糊的。
许多USB蓝牙适配器或“软件狗”是可用的,其中一些还包括一个IrDA适配器。
‘贰’ Android 6.0 扫描不到 Ble 设备需开启位置权限
最近总是有用户反馈说APP扫描不到设备,让我很费解了一段时间,尤其是华为和OPPO,公司还专门买了这款手机,然后测试没问题,直到一个偶然,我把手机定位给关了,才发现这个问题,Android 6.0 扫描设备需开启位置权限,用户突然一天把定位给关了,我们在扫描之前又没检测,唉,一个逻辑不严谨就会出现各种问题,现在记录一下
权限获取
<uses-permission android:name="android.permission.BLUETOOTH"/> 使用蓝牙所需要的权限
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 使用扫描和设置蓝牙的权限(申明这一个权限必须申明上面一个权限)
在Android5.0之前,是默认申请GPS硬件功能的。而在Android 5.0 之后,需要在manifest 中申明GPS硬件模块功能的使用。
<!-- Needed only if your app targets Android 5.0 (API level 21) or higher. -->
<uses-feature android:name="android.hardware.location.gps" />
在 Android 6.0 及以上,还需要打开位置权限。如果应用没有位置权限,蓝牙扫描功能不能使用(其它蓝牙操作例如连接蓝牙设备和写入数据不受影响)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
除了上面的设置之外,如果想设置设备只支持 BLE,可以加上下面这句话
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
同样,如果不想添加 BLE 的支持,那么可以设置 required="false"
然后可以在运行时判断设备是否支持 BLE,
// Use this check to determine whether BLE is supported on the device. Then
// you can selectively disable BLE-related features.
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
finish();
}
打开定位 (Location)
首先检查定位是否打开,可以像下面这样操作:
/**
* Location service if enable
*
* @param context
* @return location is enable if return true, otherwise disable.
*/
public static final boolean isLocationEnable(Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (networkProvider || gpsProvider) return true;
return false;
}
如果定位已经打开,可以搜索到 ble 设备;如果定位没有打开,则需要用户去打开,像下面这样:
private static final int REQUEST_CODE_LOCATION_SETTINGS = 2;
private void setLocationService() {
Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
this.startActivityForResult(locationIntent, REQUEST_CODE_LOCATION_SETTINGS);
}
进入定位设置界面,让用户自己选择是否打开定位。选择的结果获取:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_LOCATION_SETTINGS) {
if (isLocationEnable(this)) {
//定位已打开的处理
} else {
//定位依然没有打开的处理
}
} else super.onActivityResult(requestCode, resultCode, data);
}