1.蓝牙RFCOMM协议实现
2.Androidå¼åä¹èçï¼Bluetoothï¼
3.android蓝牙通讯Socket.connect()方法调用不成功。为什么?
4.Androidèçå¼åââå®ç°èçè天
5.Android 蓝牙开发(1)
蓝牙RFCOMM协议实现
基于RFCOMM的通信demo是一个允许两个安卓设备进行双向蓝牙数据交互的程序,该程序通过展示蓝牙API功能实现基本的蓝牙通信。以下是实现步骤及关键代码分析:
步骤一:扫描与发现周围可用的蓝牙设备。通过蓝牙API功能,扫描并展示周围可用的代码的源码蓝牙设备,同时获得BluetoothDevice对象,用于后续建立连接。
步骤二:发起连接。单独启动线程发起连接,当点击已发现的设备,传入设备对象,线程启动尝试连接。关键代码为:device.createRfcommSocketToServiceRecord(MY_UUID_SECURE)建立与选定设备的RFCOMM通道,通过mmSocket.connect()发起连接,服务端设备响应连接请求并获得socket连接对象。
步骤三:连接管理。数据源码在发起连接后,新起线程用于管理连接,包括发送与接收数据。
步骤四:响应连接。客户端设备发起连接并管理连接,服务端设备需响应连接请求。可通过监听特定服务的连接请求实现,使用代码:mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE,python 字典源码MY_UUID_SECURE)监听连接请求,socket = mmServerSocket.accept()响应请求返回socket连接对象,启动连接管理线程进行数据交互。
总结:该demo实现了简单的字符串数据收发,没有进行数据分类、分包处理。后期可考虑改进。
源码获取:通过私信或评论方式。
Androidå¼åä¹èçï¼Bluetoothï¼
å¨ä¸ä¸ç¯ä¸æä»ç»äºWifiä¸ç½ç»è¿æ¥å¤çAndroidå¼åä¹WiFiä¸ç½ç»è¿æ¥å¤ç
ä¸é¢ï¼æ¥ç»§ç»è¯´è¯´Androidä¸èççåºæ¬ä½¿ç¨ã
Bluetoothæ¯ç®å使ç¨çæ广æ³çæ 线é讯åè®®ä¹ä¸,layui table源码主è¦é对çè·ç¦»è®¾å¤é讯ï¼ç±³ï¼ï¼å¸¸ç¨äºè¿æ¥è³æºãé¼ æ å移å¨é讯设å¤çã
å¼å¾ä¸æçæ¯ï¼
android4.2æ°å¢äºé¨åæ°åè½ï¼ä½æ¯å¯¹äºBluetoothçæç人æ许å¼å§å¤´ç¼äºï¼é£å°±æ¯Android4.2å¼å ¥äºä¸ä¸ªæ°çèçåè®®æ éBLEãè°·æåBroadcomä¹é´çåä½ï¼å¼åæ°çèçåè®®æ ï¼å代äºåºäºå æ çBluezãå æ¤å¸åºä¸åºç°äºè设å¤çå ¼å®¹é®é¢ï¼å¾å¤èç设å¤å¨android4.2ææºä¸ä¸è½æ£å¸¸ä½¿ç¨ã
BluetoothAdapterç®åç¹æ¥è¯´å°±æ¯ä»£è¡¨äºæ¬è®¾å¤(ææºãçµèç)çèçéé å¨å¯¹è±¡ã
firstï¼we need permission
è¦æä½èçï¼å è¦å¨AndroidManifest.xmléå å ¥æé
**ä¸é¢æ¥ççå¦ä½ä½¿ç¨èçã **âââ
****Demo已就绪ï¼
è¿åå¼ï¼å¦æ设å¤å ·å¤èçåè½ï¼è¿åBluetoothAdapter å®ä¾ï¼å¦åï¼è¿ånull对象ã
æå¼èç设å¤çæ¹å¼ï¼
1.ç´æ¥è°ç¨å½æ°enable()å»æå¼èçè®¾å¤ ï¼
2.ç³»ç»APIå»æå¼èç设å¤ï¼è¯¥æ¹å¼ä¼å¼¹åºä¸ä¸ªå¯¹è¯æ¡æ ·å¼çActivityä¾ç¨æ·éæ©æ¯å¦æå¼èç设å¤ã
注æï¼1.å¦æèçå·²ç»å¼å¯ï¼ä¸ä¼å¼¹åºè¯¥Activityçé¢ã2.å¨ç®å大å¤æ°Androidææºä¸ï¼æ¯ä¸æ¯æå¨é£è¡æ¨¡å¼ä¸å¼å¯èççãå¦æèçå·²ç»å¼å¯ï¼é£ä¹èççå¼å ³ ,ç¶æä¼éçé£è¡æ¨¡å¼çç¶æèåçæ¹åã
1. æç´¢èç设å¤
使ç¨BluetoothAdapterçstartDiscovery()æ¹æ³æ¥æç´¢èç设å¤
startDiscovery()æ¹æ³æ¯ä¸ä¸ªå¼æ¥æ¹æ³ï¼è°ç¨åä¼ç«å³è¿åã该æ¹æ³ä¼è¿è¡å¯¹å ¶ä»èç设å¤çæç´¢ï¼è¯¥è¿ç¨ä¼æç»ç§ã该æ¹æ³è°ç¨åï¼æç´¢è¿ç¨å®é ä¸æ¯å¨ä¸ä¸ªSystem Serviceä¸è¿è¡çï¼æ以å¯ä»¥è°ç¨cancelDiscovery()æ¹æ³æ¥åæ¢æç´¢ï¼è¯¥æ¹æ³å¯ä»¥å¨æªæ§è¡discovery请æ±æ¶è°ç¨ï¼ã
ç³»ç»å¼å§æç´¢èç设å¤
^( * ï¿£(oo)ï¿£ ) ^ ç³»ç»ä¼åé以ä¸ä¸ä¸ªå¹¿æï¼
2.æ«æ设å¤
3.å®ä¹å¹¿ææ¥æ¶å¨æ¥æ¶æç´¢ç»æ
4.注å广æ
è·åéè¿çèç设å¤
第ä¸æ¥å»ºç«è¿æ¥ï¼é¦å Android sdkï¼2.0以ä¸çæ¬ï¼æ¯æçèçè¿æ¥æ¯éè¿BluetoothSocket建ç«è¿æ¥ï¼æå¡ç«¯BluetoothServerSocketå客æ·ç«¯ï¼BluetoothSocketï¼éæå®åæ ·çUUIDï¼æè½å»ºç«è¿æ¥ï¼å 为建ç«è¿æ¥çæ¹æ³ä¼é»å¡çº¿ç¨ï¼æ以æå¡å¨ç«¯å客æ·ç«¯é½åºå¯å¨æ°çº¿ç¨è¿æ¥ã
ï¼è¿éçæå¡ç«¯å客æ·ç«¯æ¯ç¸å¯¹æ¥è¯´çï¼
两个èç设å¤ä¹é´çè¿æ¥ï¼åå¿ é¡»å®ç°æå¡ç«¯ä¸å®¢æ·ç«¯çæºå¶ã
å½ä¸¤ä¸ªè®¾å¤å¨åä¸ä¸ªRFCOMM channelä¸åå«æ¥æä¸ä¸ªè¿æ¥çBluetoothSocketï¼è¿ä¸¤ä¸ªè®¾å¤æå¯ä»¥è¯´æ¯å»ºç«äºè¿æ¥ã
æå¡ç«¯è®¾å¤ä¸å®¢æ·ç«¯è®¾å¤è·åBluetoothSocketçéå¾æ¯ä¸åçã
1ï¼æå¡ç«¯è®¾å¤æ¯éè¿acceptedä¸ä¸ªincoming connectionæ¥è·åçï¼
2ï¼å®¢æ·ç«¯è®¾å¤åæ¯éè¿æå¼ä¸ä¸ªå°æå¡ç«¯çRFCOMM channelæ¥è·åçã
æå¡ç«¯
éè¿è°ç¨BluetoothAdapterçlistenUsingRfcommWithServiceRecord(String, UUID)æ¹æ³æ¥è·åBluetoothServerSocketï¼UUIDç¨äºå®¢æ·ç«¯ä¸æå¡ç«¯ä¹é´çé 对ï¼
客æ·ç«¯
è°ç¨BluetoothServiceçcreateRfcommSocketToServiceRecord(UUID)æ¹æ³è·åBluetoothSocketï¼è¯¥UUIDåºè¯¥åäºæå¡ç«¯çUUIDï¼ã
è°ç¨BluetoothSocketçconnect()æ¹æ³ï¼è¯¥æ¹æ³ä¸ºblockæ¹æ³ï¼ï¼å¦æUUIDåæå¡ç«¯çUUIDå¹é ï¼å¹¶ä¸è¿æ¥è¢«æå¡ç«¯acceptï¼åconnect()æ¹æ³è¿åã
æ°æ®ä¼ éï¼éè¿ä»¥ä¸æä½ï¼å°±å·²ç»å»ºç«çBluetoothSocketè¿æ¥äºï¼æ°æ®ä¼ éæ éæ¯éè¿æµçå½¢å¼
è·åæµ
该类就æ¯å ³äºè¿ç¨èç设å¤çä¸ä¸ªæè¿°ãéè¿å®å¯ä»¥åæ¬å°èç设å¤---BluetoothAdapterè¿æ¥éä¿¡ã
好å¤ä¸è¥¿æä¹ä¸ç¥éæä¹æè¿°ï¼ä¸é¢ç»åºDemoï¼
å好æåå¦ä¹ çå°ä¼ä¼´é®æListViewæä¹ç¨ï¼é£æå°±ç¨ListViewã
æºç ï¼
RairDemo
GitHub: /Rairmmd/android-demo
Coding: /u/Rair/p/RairDemo/git
android蓝牙通讯Socket.connect()方法调用不成功。为什么?
UUID值出现错误。看一下android有关bluetooth的API,用于普通蓝牙适配器和android手机蓝牙模块连接的,而且这个UUID的值必须是----F9BFB。
这个是android的API上面说明的.connect().在连接的时候,android手机作client(主动和电脑建立连接),如果电脑作为server(一直监听是否有服务连接),则需要在手机端调用这样一行代码.两边的卖博彩源码UUID必须是一样的,这是一个服务的唯一标识。
Androidèçå¼åââå®ç°èçè天
ä¸èçå¼å主è¦çç¸å ³ç±»æ¯ä»¥ä¸å个ç¥é对åºAPIåå°±å¯ä»¥è¿è¡å¯¹åºçèçå¼åï¼è¿é以è·åèç设å¤ä¸ºä¾å
}
æ索设å¤çåè°åéè¦éè¿æ³¨å广æçå½¢å¼æ¥è·å
å®ä¹å¹¿æ
ä¹åå°±å¯ä»¥è¿è¡ä¸ªäººçä¸äºæä½
è¦å®ç°èçè天åæ¶åå°èçä¹é´çä¼ è¾éä¿¡ï¼åé¢ä¹è¯´å°äºï¼è¿éè¯å®å°±æ¯ç¨å°BluetoothServerSocket以åBluetoothSocketã
èçä¼ è¾éä¿¡ç¸å½äºæå¡å¨ç«¯ä¸å®¢æ·ç«¯ä¹é´çéä¿¡ï¼åªä¸è¿ä¸åæ¯è¿éæ¯ä¸ä¸ªèç设å¤æ¬èº«èªå·±æ¢å å½æå¡å¨ç«¯ä¹å å½å®¢æ·ç«¯ï¼å¤§è´çå ³ç³»å°±æ¯
注æï¼è¿äºè¿æ¥é½æ¯é»å¡å¼çï¼é½è¦æ¾å¨çº¿ç¨éå»æ§è¡ã
å¯ä»¥çå°ï¼å½BluetoothServerSocketçå¬å°æ设å¤è¿æ¥çæ¶åï¼å°±ä¼è°ç¨dataTransferå¼å¯ä¸ä¸ªæ°æ®ä¼ è¾ã
éè¦ä¸ä¸ªConnectThreadæ¥åèµ·
ä¹å建ç«è¿æ¥ä¹åå°±ä¼è°ç¨dataTransferæ¥è¿è¡æ°æ®ä¼ è¾ï¼åæ ·ä¹éè¦ä¸ä¸ªçº¿ç¨æ¥ç»´æ¤æ°æ®ä¼ è¾
èçè天åæ¯åºäºä¸é¢ä¸ä¸ªçº¿ç¨æ¥è¿è¡å®ç°ï¼åæ ·ï¼å¯¹äºèçæ件é´çä¼ è¾ä¹æ¯å个éçï¼éè¿è¾å ¥è¾åºæµæ¥è¿è¡å¤çãä¹åçæä½å°±æ¯è¾å®¹æå¤çäº
èçè天
Android èçå¼ååºæ¬æµç¨
Android 蓝牙开发(1)
Android平台内置蓝牙网络堆栈,支持无线数据交换,应用框架提供API,允许应用通过Android Bluetooth API访问蓝牙功能,实现设置蓝牙、查找设备、连接设备和传输数据。API主要包含在android.bluetooth包中,涉及关键类如BluetoothAdapter、BluetoothDevice、BluetoothSocket、BluetoothServerSocket等。蓝牙权限需声明BLUETOOTH。使用方法包括设置蓝牙状态、查找和配对设备,以及发起连接或使用BluetoothProfile配置文件进行特定通信。配置文件如A2DP用于音频传输,Headset控制耳机,BluetoothClass描述设备功能,而BluetoothGatt专门用于低功耗蓝牙通信。蓝牙权限需在应用中声明BLUETOOTH。连接过程需配对设备,API提供方法如getBondedDevices查询已配对设备。发现设备时,使用startDiscovery,注册BroadcastReceiver接收发现结果。设备可被设置为可检测状态,使用ACTION_REQUEST_DISCOVERABLE Intent。连接设备后,应用可使用BluetoothSocket进行数据传输。配置文件用于特定设备间通信,如免提配置文件与耳机、健康配置文件与健康设备。总的来说,Android蓝牙开发提供完整API支持,实现设备间高效无线数据交互。