android蓝牙连接状态
❶ bc8android蓝牙连接手机怎么放音乐
1、在桌面上找到设置这个应用,轻触设置的应用图标进入设置页面。
2、在设置的主页面中找到蓝牙这个选项,点击蓝牙进入蓝牙设置页面。
3、进入蓝牙的设置页面,可以看到蓝牙默认处于关闭状态,点击蓝牙右侧的开关进行蓝牙的开启。
4、打开蓝牙功能后,还需要开启开放检测功能这样才能被蓝牙耳机识别连。
5、设置好后,系统会自动扫描附近可连接的蓝牙设备,此时需要保证蓝牙耳机处于开机状态。
❷ 安卓手机蓝牙已配对但无法连接怎么回事
应该是操作方式不对。
要使用正确的连接方法才能连接上去。步骤如下:
1,手机打开蓝牙功能,进去搜索蓝牙耳机状态。
2,使蓝牙耳机在开机状态,需要长按蓝牙耳机的接听键。
3,直到指示灯:蓝灯红灯交替闪烁再松开。
4,这个时候蓝牙耳机和手机会再次进入匹对。
5,注意手机和蓝牙距离要在10米之内。
6,等手机上面显示此蓝牙型号设备后,点击确定即可连接使用了。
7,如以下指导示意图:
❸ android 怎么判断连接了那个蓝牙耳机
ba = BluetoothAdapter.getDefaultAdapter();// int isBlueCon;//蓝牙适配器是否存在,即是否发生了错误 if (ba == null){// isBlueCon = -1; //error return -1; } else if(ba.isEnabled()) { int a2dp = ba.getProfileConnectionState(BluetoothProfile.A2DP); //可操控蓝牙设备,如带播放暂停功能的蓝牙耳机 int headset = ba.getProfileConnectionState(BluetoothProfile.HEADSET); //蓝牙头戴式耳机,支持语音输入输出 int health = ba.getProfileConnectionState(BluetoothProfile.HEALTH); //蓝牙穿戴式设备
❹ 蓝牙自动连接实现
1.当蓝牙配对成功连接时,断开远程端设备会自动连接
2.当设备长时间锁屏会导致CachedBluetoothDevice自动清空,如果蓝牙断开就不会自动连接的处理
监控蓝牙断开连接状态时发生哪些改变媒体音频与通话音频(a2dp与hfp)
1.在com.android.bluetooth.btservice.AdapterProperties这个类中蓝牙连接状态
2.在com.android.bluetooth.a2dpsink.A2dpSinkStateMachine这个类中蓝牙连接状态
3.在com.android.bluetooth.hfpclient.HeadsetClientStateMachine这个类中蓝牙连接状态
广播监听com.android.settings.bluetooth.DockEventReceiver
com.android.settings.bluetooth.LocalBluetoothPreferences存储值
com.android.settings.bluetooth.DeviceProfilesSettings点击断开连接时取消保存
创建服务com.android.settings.bluetooth.BluetoothConnectService
蓝牙自动连接完毕经测试长时间灭屏重启远距离断开等场景再次检测到之前连接设备时会自动连接
❺ android蓝牙连接成功后没有返回状态
没有返回状态说明连接成功。
也就是说链路层的数据只存在发送成功(可能经过重发N次后成功),或者连接断开,不存在失败的可能性,也就无所谓返回状态的区别。
onCharacteristicWrite返回的status状态看一下API就知道了,都是GATT开头的各种常量,也就是说从设备一定是接收到了数据,但是数据从链路层转发到GATT层的过程中可能存在各种异常情况,导致返回错误。需要注意的是应用层无法决定这个返回状态,比如说如果从设备的应用层接收到数据后发现不符合自己定义的接口数据协议规范,那么也只能通过另外发起notify来通知主设备,而无法通过status来返回错误类型。
❻ android 怎么判断蓝牙配对成功
可以通过mDevice.getBondState()进行判断是否需要配对;
如下代码中: (mBluetoothDevice.getBondState()==BluetoothDevice.BOND_NONE表示未配对。可以在调用配对方法之后读取一下这个状态来判断是否已配对成功。)
protectedvoidconnectDevice(){
try{
//连接建立之前的先配对
if(mBluetoothDevice.getBondState()==BluetoothDevice.BOND_NONE){
MethodcreMethod=BluetoothDevice.class
.getMethod("createBond");
Log.e("TAG","开始配对");
creMethod.invoke(mBluetoothDevice);
}else{
}
}catch(Exceptione){
//TODO:handleexception
//DisplayMessage("无法配对!");
e.printStackTrace();
}
mBluetoothAdapter.cancelDiscovery();
try{
socket.connect();
//DisplayMessage("连接成功!");
//connetTime++;
connected=true;
}catch(IOExceptione){
//TODO:handleexception
//DisplayMessage("连接失败!");
connetTime++;
connected=false;
try{
socket.close();
socket=null;
}catch(IOExceptione2){
//TODO:handleexception
Log.e(TAG,"");
}
}finally{
connecting=false;
}
}
❼ Android怎么检测蓝牙的连接状态如果一段断开,我这边怎么检测得到
按照蓝牙规范,一旦超时连接断开,会返回上层Disconnect complete Event with reason code: supervision timeout.可以根据该原因码,检测连接状态,具体方法为:
1、BluetoothAdapter 顾名思义,蓝牙适配器,直到建立bluetoothSocket连接之前,都要不断操作它BluetoothAdapter里的方法很多,常用的有以下几个:cancelDiscovery() 根据字面意思,是取消发现,也就是说当正在搜索设备的时候调用这个方法将不再继续搜索disable()关闭蓝牙enable()打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候需要问下用户是否打开,一下这两行代码同样是打开蓝牙,不过会提示用户:Intemtenabler=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler,reCode);//同startActivity(enabler);
getAddress()获取本地蓝牙地址getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdaptergetName()获取本地蓝牙名称。
2、getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)isDiscovering()判断当前是否正在查找设备,是返回true***isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false***(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步startDiscovery()开始搜索,这是搜索的第一步2.BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备(UUIDuuid)根据UUID创建并返回一个BluetoothSocket这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket
这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter。
❽ Android蓝牙协议-蓝牙配对与连接
蓝牙设备在连接前,会先检查设备是否已经配对过,如果没有则先配对,配对完成后,再开始连接。
蓝牙连接开始于设备列表 DeviceListPreferenceFragment的onPreferenceTreeClick方法。
DeviceListPreferenceFragment是蓝牙设备列表,点击其中一个蓝牙设备,开始蓝牙的连接过程。
调用onDevicePreferenceClick方法,接着调用BluetoothDevicePreference的onClicked方法,开始连接,以及连接前的状态检测。
获取mCachedDevice的绑定状态,
pair方法会调用CachedBluetoothDevice.startPairing,启动配对
createBond调用BluetoothDevice.createBond方法,BluetoothDevice.createBond接着调用IBluetooth.createBond方法,下面会调用蓝牙远程服务。
和蓝牙扫描一样,实现IBluetooth接口的类是AdapterServiceBinder,
AdapterServiceBinder实现IBluetooth.Stub接口,并且是AdapterService的私有内部类, AdapterServiceBinder接受事件,都会转交AdapterService处理 ,所以IBluetooth.createBond方法会调用AdapterService.createBond方法。
createBond方法会检查一下远程设备属性信息,再次取消蓝牙扫描任务,将配对任务转交mBondStateMachine,由状态机处理该信息。
BondStateMachine状态机的初始状态是StableState,所以BondStateMachine.CREATE_BOND由StableState处理,StableState在processMessage中调用BondStateMachine.createBond方法
createBondNative方法实现com_android_bluetooth_btservice_AdapterService.cpp中
❾ android 怎么判断蓝牙连接状态
在设置——蓝牙里,在显示的蓝牙列表里有已连接或者断开状态
❿ Android蓝牙怎么检测连接状态
首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限
<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permissionandroid:name="android.permission.BLUETOOTH" />
然后,看下api,Android所有关于蓝牙开发的类都在android.bluetooth包下,如下图,只有8个类
而我们需要用到了就只有几个而已:
1.BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断操作它BluetoothAdapter里的方法很多,常用的有以下几个:cancelDiscovery() 根据字面意思,是取消发现,也就是说当我们正在搜索设备的时候调用这个方法将不再继续搜索disable()关闭蓝牙enable()打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候我们需要问下用户是否打开,一下这两行代码同样是打开蓝牙,不过会提示用户:Intemtenabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler,reCode);//同startActivity(enabler);
getAddress()获取本地蓝牙地址getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdaptergetName()获取本地蓝牙名称getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)isDiscovering()判断当前是否正在查找设备,是返回true***isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false***(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步startDiscovery()开始搜索,这是搜索的第一步2.BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备(UUIDuuid)根据UUID创建并返回一个BluetoothSocket这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket
这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter
3.BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不过了,既然是Socket,方法就应该都差不多,这个类一种只有三个方法
两个重载的accept(),accept(inttimeout)两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行!
还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接
close()这个就不用说了吧,翻译一下——关闭!4.BluetoothSocket,跟BluetoothServerSocket相对,是客户端一共5个方法,不出意外,都会用到
close(),关闭connect()连接getInptuStream()获取输入流getOutputStream()获取输出流getRemoteDevice()获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备