当前位置: 首页 > news >正文

android 中文 api (72) —— BluetoothSocket[蓝牙]

前言

  本章内容是   android.bluetooth.BluetoothSocket,为Android蓝牙部分的章节翻译。蓝牙通讯套接字,代表了与远端设备的连接点,使用socket本地程序可以通过inputstream和outputstream与远端程序进行通讯。版本为 Android   2.3   r1,翻译来自中山大学的"Android Club SYSU",欢迎访问他们的WIKI:http://www.android-wiki.net,再次感谢"Android Club SYSU"!期待你一起参与Android API 的中文翻译,联系我 over140@gmail.com。 

 

声明

  欢迎转载,但请保留文章原始出处:)

    Android Club SYSU:http://www.android-wiki.net

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://code.taobao.org/project/view/404/

 

正文

  一、结构

public final class BluetoothSocket extends Object implements Parcelable

        

java.lang.Object

android.bluetooth.BluetoothSocket

  二、概述

         已连接或连接到蓝牙套接字(socket)

         蓝牙端口监听接口和TCP端口类似:Socket和ServerSocket类。在服务器端,使用BluetoothServerSocket类来创建一个 监听服务端口。当一个连接被BluetoothServerSocket所接受,它会返回一个新的BluetoothSocket来管理该连接。在客户 端,使用一个单独的BluetoothSocket类去初始化一个外接连接和管理该连接。

 最通常使用的蓝牙端口是RFCOMM,它是被Android API支持的类型。RFCOMM是一个面向连接,通过蓝牙模块进行的数据流传输方式,它也被称为串行端口规范(Serial Port Profile,SPP)。

 为了创建一个BluetoothSocket去连接到一个已知设备,使用方法 BluetoothDevice.createRfcommSocketToServiceRecord()。然后调用connect()方法去尝试一个 面向远程设备的连接。这个调用将被阻塞指导一个连接已经建立或者该链接失效。

 为了创建一个BluetoothSocket作为服务端(或者“主机”),查看BluetoothServerSocket文档。

 每当该端口连接成功,无论它初始化为客户端,或者被接受作为服务器端,通过getInputStream()和getOutputStream()来打开IO流,从而获得各自的InputStream和OutputStream对象

 BluetoothSocket类线程安全。特别的,close()方法总会马上放弃外界操作并关闭服务器端口。

 注意:需要BLUETOOTH权限。

 参见

         BluetoothServerSocket

     InputStream

    OutputStream

  三、公共方法

    public void close ()

马上关闭该端口并且释放所有相关的资源。

在其它线程的该端口中引起阻塞,从而使系统马上抛出一个IO异常。

异常

IOException

 

    public void connect ()

尝试连接到远程设备。

该方法将阻塞,指导一个连接建立或者失效。如果该方法没有返回异常值,则该端口现在已经建立。

当设备查找正在进行的时候,创建对远程蓝牙设备的新连接不可被尝试。在蓝牙适配器上,设备查找是一个重量级过程,并且肯定会降低一个设备的连接。使用 cancelDiscovery()方法去取消一个外界的查询。查询并不由活动所管理,而作为一个系统服务来运行,所以即使它不能直接请求一个查询,应用 程序也总会调用cancelDiscovery()方法。

close()方法可以用来放弃从另一线程而来的调用。

异常

IOException     一个错误,例如连接失败。

 

    public InputStream getInputStream ()

通过连接的端口获得输入数据流

即使该端口未连接,该输入数据流也会返回。不过在该数据流上的操作将抛出异常,直到相关的连接已经建立。

返回值

输入流

异常

IOException

 

    public OutputStream getOutputStream ()

通过连接的端口获得输出数据流

即使该端口未连接,该输出数据流也会返回。不过在该数据流上的操作将抛出异常,直到相关的连接已经建立。

返回值

输出流

异常

IOException

 

    public BluetoothDevice getRemoteDevice ()

获得该端口正在连接或者已经连接的远程设备。

返回值

         远程设备

 

  四、补充

      文章精选

          第四十一讲:Android蓝牙编程入门

      Android蓝牙API之BluetoothSocket

      Android蓝牙API之BluetoothSocket类(2)

相关文章:

  • 为Oracle Clusterware修改公用及私有网络接口
  • C#的未来:元组及匿名结构体
  • 区块链3.0,人工智能与区块链的完美融合
  • JQUERY弹层|图片滚动|插件开发|上传 相关收藏
  • BZOJ1798[Ahoi2009]维护序列——线段树
  • iOS问题整理08----性能优化
  • DBA需要掌握的shell知识
  • Mysql学习笔记(六)增删改查
  • 如何撰写好文档?精益文档的六个实践
  • 最最最常见的Java面试题总结-第一周
  • 耗时一个月,我为拉勾设计的移动端
  • NGUI学习笔记(一):官方视频学习记录
  • 个推用户画像产品 (个像) Android 集成实践
  • asp.net下使用Cookie保存登录信息
  • SQLServer插入数据
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • KMP算法及优化
  • TCP拥塞控制
  • 搞机器学习要哪些技能
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 巧用 TypeScript (一)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • #图像处理
  • $.proxy和$.extend
  • (2022 CVPR) Unbiased Teacher v2
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)二分查找 超详细
  • (Java数据结构)ArrayList
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (原創) 物件導向與老子思想 (OO)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)socket Aio demo
  • (转)四层和七层负载均衡的区别
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • **CI中自动类加载的用法总结
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net - 类的介绍
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 指南:抽象化实现的基类
  • .net 中viewstate的原理和使用
  • .NET的微型Web框架 Nancy
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [1127]图形打印 sdutOJ
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [ACM] hdu 1201 18岁生日
  • [AIGC] Spring Interceptor 拦截器详解
  • [C# 开发技巧]实现属于自己的截图工具
  • [C++]模板与STL简介
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [Django开源学习 1]django-vue-admin
  • [Geek Challenge 2023] web题解
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce