android蓝牙通信

上传人:Wo****B 文档编号:170098388 上传时间:2022-11-18 格式:DOC 页数:5 大小:16KB
返回 下载 相关 举报
android蓝牙通信_第1页
第1页 / 共5页
android蓝牙通信_第2页
第2页 / 共5页
android蓝牙通信_第3页
第3页 / 共5页
点击查看更多>>
资源描述
android蓝牙通信 实现Android和PC之间的蓝牙通信 这两天想实现PC和安卓手机的通信,限于程度,知道的方法大概有两种:基于数据包的socket和蓝牙。虽然看起来简单,但调也调了两天多。自己测试了下socket,在室内WIFI环境下时延大概是0.1s。而在3G网络下时延居然达3s之多,而且只要不发数据,端口貌似就会断掉,总之,很不爽。于是,便考虑了蓝牙的方法。 实现手机和PC的蓝牙通信,一种是最常用的蓝牙虚拟串口,这种方法可以通过配置非常简单地实现,很多外置蓝牙GPS都用这种做法。但大名鼎鼎的安卓却不支持,因此对大局部外置GPS都不提供支持可能安卓手机大局部包含内置GPS,觉得外置的太鸡肋了。因此必须采用第二种,蓝牙socket。 在电脑上,实在不想去在C+下开发,于是便寻找.组件,但实际上微软的库中不支持蓝牙,因此必须采用第三方的控件,名字叫inthehand. 这篇文章中详细的介绍了inthehan d组件,:/blogs./procoder/archive/2023/09/22/1571580.。由于它讨论了实现文件传输的思路,我们在这篇文章中就只讨论简单的字符传输。 它的官方网站是inthehand.,其中多数的类库和方法都能找到。 下面是手机端的初始化代码。其中的详细含义可参照:/android.tgbus./Android/tutorial/202303/346657.s。 private PrintStream mPrintStream = null; private BufferedReader mBufferedReader = null; BluetoothAdapter myBluetoothAdapter = null; BluetoothServerSocket mBThServer = null; BluetoothSocket mBTHSocket = null; myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter; myBluetoothAdapter.enable;/open bth Intent discoverableIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);/使得蓝牙处于可发现形式,持续时间150s discoverableIntent.putExtra( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 150); 复制代码 下面是PC上的初始化核心代码:PC是作为客户端出现的。它需要通过搜索获取手机的蓝牙MAC地址,实现通信。GUID又名UUID,是标记硬件地址的一种方法。 / / 翻开端口 / / / 成功否 public bool OpenPort(string Name) InTheHand.Bluetooth.BluetoothRadio.PrimaryRadio.Mode = InTheHand.Bluetooth.RadioMode.Connectable; InTheHand.Sockets.BluetoothClient cli = new InTheHand.Sockets.BluetoothClient; InTheHand.Sockets.BluetoothDeviceInfo devices = cli.DiscoverDevices; foreach (InTheHand.Sockets.BluetoothDeviceInfo device in devices)/设备搜寻 device.Update; device.Refresh; MessageBox.Show(设备已找到 break; BluetoothDeviceInfo bd = new BluetoothDeviceInfo(devices0.DeviceAddress); bluetoothClient = new BluetoothClient; Guid mGUID = Guid.Parse(9a66bluetoothClient.Connect(devices0.DeviceAddress, mGUID);/客户端对地址实现连接,这是一个阻塞线程,需要效劳器端的回应 ReceiveThread = new Thread(ReceiveMethod); ReceiveThread.Start; return true; 复制代码 下面是手机承受PC端连接恳求的方法: View Code 要通过手机发送数据,执行以下代码即可: mPrintStream.write(buff); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace; / 发送给效劳器 mPrintStream.flush; 复制代码 PC端的承受代码: while (isConnecting) try Stream peerStream = bluetoothClient.GetStream; peerStream.Read(buffer, 0, PACKETLENGTH); /dataprocess; catch (Exception ex) isConnecting = false; MessageBox.Show(ex.ToString); 复制代码 第 5 页 共 5 页
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿件


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!