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端口类似:SocketServerSocket类。在服务器端,使用BluetoothServerSocket类来创建一个 监听服务端口。当一个连接被BluetoothServerSocket所接受,它会返回一个新的BluetoothSocket来管理该连接。在客户 端,使用一个单独的BluetoothSocket类去初始化一个外接连接和管理该连接。

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

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

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

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

 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蓝牙APIBluetoothSocket

      Android蓝牙APIBluetoothSocket(2)


转载:http://www.cnblogs.com/over140/archive/2010/12/22/1913353.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令(二)

19. 文件压缩命令 (1)。gzip [文件名]  压缩后的文件格式是.gz   只能压缩文件不能压缩目录 不保留源文件 (2)。gunzip [文件名]  解压缩命令 (3)。tar 选项[cvf] [目录]  打包目录  压缩后的文件…

五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题

这个方法其实已经使用很久了,之前主要在嵌入式WebQQ等产品中用过,现在拿出来分享一下吧,是目前最简洁的方式来实现ie6的position:fixed; 失效bug,以及的其他方法的闪动问题,CSS代码如下,很简单,…

致年轻开发人员的一封信

我收到了很多年轻开发人员写给我的邮件,希望可以提升自己的编程能力。我肯定不是第一个讨论这个话题的人,所以我不确定还可以说出什么新意。然而,这里我认为还是非常值得列出我认为很重要的几点吧。 要跟其他开发者一起工作。我们正处在科技史…

笔记整理之 SHELL 变量

变量的类型:1.自定义变量定义变量: 变量名变量值 变量名必须以字母或下划线开头,区分大小写 url1test.3glong.com 引用变量: $变量名 或 ${变量名} 查看变量: echo $变量名 set(所有变量:包括自定…

Node的异步与java的异步_node.js和异步编程回文

以下代码不是异步的&#xff0c;为什么以及如何制作呢&#xff1f;function compute(callback){for(var i 0; i < 1000 ; i){}callback(i);}我将假设你的代码试图说&#xff0c;“我需要做1000次&#xff0c;然后在一切都完成时使用我的回调” .即使你的for循环也不会在这里…

N个三角形分割平面个数(数学)

一个三角形的时候&#xff0c;再加一个三角形&#xff0c;每一条变会与第一个三角形的两条边相交&#xff0c;这样增加2个小三角形&#xff0c;即两个面。f(2)3*2f(1)&#xff0c;再加一个三角形&#xff0c;每一条边会与前两个三角形的四条边相交&#xff0c;形成四个小三角形…

2011年9月19日 面试重点:asp.net运行原理和生命周期

面试重点&#xff1a;asp.net运行原理和生命周期1、ispostback回调机制isPostBackfalse !IsPostBackture 当前页面是第一次加载IsPostBack 由于用户交互(page.submit())提交页面而产生的加载,二次加载html客户端代码将ispostback值存放在viewstate隐藏字段中<input type&quo…

redis——集群

2019独角兽企业重金招聘Python工程师标准>>> 现实中redis需要若干台redis服务器的支持&#xff1a; &#xff08;1&#xff09;从结构上&#xff0c;单个Redis服务器会产生单点故障&#xff0c;同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并…

queue java 用法_Java队列(Queue)用法

Java 实例 - 队列(Queue)用法队列是一种特殊的线性表&#xff0c;它只允许在表的前端进行删除操作&#xff0c;而在表的后端进行插入操作。LinkedList类实现了Queue接口&#xff0c;因此我们可以把LinkedList当成Queue来用。以下实例演示了队列(Queue)的用法&#xff1a;Main.j…

POJ 2409 Let it Bead (Polya定理)

题意 用k种颜色对n个珠子构成的环上色&#xff0c;旋转翻转后相同的只算一种&#xff0c;求不等价的着色方案数。 思路 Polya定理 X是对象集合{1, 2, ……, n}&#xff0c; 设G是X上的置换群&#xff0c;用M种颜色染N种对象&#xff0c;则不同的染色方案数为&#xff1a; λ(g)…

seo

SEO&#xff08;Search Engine Optimization&#xff09;&#xff0c;汉译为搜索引擎优化&#xff0c;是较为流行的网络营销方式&#xff0c;主要目的是增加特定关键字的曝光率以增加网站的能见度&#xff0c;进而增加销售的机会。分为站外SEO和站内SEO两种。SEO的主要工作是通…

Ubuntu Server 之Apache2 虚拟主机配置指南(个人实践解读)

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/468531 这是完成在ubuntu Server的apache服务器上安装一个虚拟主机的具体配置。希望对用到的朋友有所帮…

java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了

作者 | 阿进的写字台链接 | www.cnblogs.com/homejim/p/9782403.html在使用 mybatis 过程中&#xff0c; 当手写 JavaBean和XML 写的越来越多的时候&#xff0c; 就越来越同意出错。这种重复性的工作&#xff0c; 我们当然不希望做那么多。还好&#xff0c; mybatis 为我们提供…

webservice-WebService试题

ylbtech-doc:webservice-WebService试题WebService试题 1.A,返回顶部001&#xff0e;{WebService题目}下列是Web服务体系结构中的角色的是&#xff08;&#xff09;&#xff08;选择3项&#xff09; A&#xff09;服务提供者 B&#xff09;服务请求者 C&#…

Session的模拟

Session相关的mock Session相关的mock主要有以下两个步骤&#xff1a; 1&#xff09; HttpContext对象的实例化 session属于HttpContext对象&#xff0c;所以简单来说&#xff0c;就是我们需要构造一个HttpContext&#xff0c;对象然后在给其中的Session附值。然后再把它指定到…

定时自动启动任务crontab命令用法

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://navyaijm.blog.51cto.com/4647068/816636 crontab简介 crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的…

9读书1-我在义务发财(1)

母亲说完&#xff0c;父亲就起身出门了。我没出门&#xff0c;上楼到了我的房间里。我要干两件事情&#xff1a;一是写“发财”两个大字贴在我的床头&#xff1b;二是在手上刺青。 //有时候为了达到自己心中说想打目标&#xff0c;必须时时刻刻的提醒自己&#xff0c;这就是一些…

java忽略引号中的分隔符_java – 令牌化但忽略引号内的分隔符

在这种情况下,使用java.util.regex.Matcher更容易使用find()而不是任何类型的拆分.也就是说,不必定义令牌之间的分隔符的模式,您可以为令牌本身定义模式.以下是一个例子&#xff1a;String text "1 2 \"333 4\" 55 6 \"77\" 8 999";// 1 2 &quo…

【转】Tomcat+MyEclipse

TomcatMyEclipse 单位&#xff1a;河南恩湃电力技术有限公司 部门&#xff1a;IT部—应用集成项目组 编写&#xff1a;刘志华 日期&#xff1a;2010-4-19 说明 本文中要讲述在程序开发过程中Tomcat和MyEclipse的一些使用方法和常用配置&#xff0c;本文适用于公司内部所有使用T…

学生管理系统(C语言)

1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #define N 35 #define LEN (Student*) malloc(sizeof(Student))6 /* 学生数据结构 */7 typedef struct node8 {9 char num[20];10 char name[15];11 int score[N];12 int …