蓝牙无线设备是在什么情况下才能通用得了

是设备解决方案的一部分

由Android,峩想介绍如何执行由蓝牙SPP(串行端口配置文件)的无线通信

Android SDK中,以有一个名为“BluetoothChat”一个示例项目因为它已经实现在执行蓝牙通信所需Ichitori嘚功能,我们想解释给该组

BluetoothChat是,它说假设的Android终端之间的连接但这次我想谈谈与其他设备,如PC连接使用SPP目标。

首先为了使用蓝牙功能的应用,“蓝牙”“BLUETOOTH_ADMIN”两个蓝牙权限之一则必须在许可证的表明自己的至少一种声明。

连接请求时连接接受,并且必要的,以便執行任何蓝牙通信如THETA传输。

必要的以便进行设备发现和蓝牙设置的初始化操作。
※如果您想使用BLUETOOTH_ADMIN许可还需要蓝牙权限。

通过该操作下面的描述将被添加到清单。

●收购并启用蓝牙适配器

一旦确认该设备支持蓝牙看是否已开启蓝牙功能,然后调用isEnabled()方法如果isEnabled()的结果是假的,蓝牙被禁用要启用蓝牙,使用ACTION_REQUEST_ENABLE行动意图调用startActivityForResult()。
这使您可以生成请求通过系统配置以启用蓝牙

当您启动ACTION_REQUEST_ENABLE行动意圖,之后对话框,请求允许启用蓝牙显示如果选择“是”,系统会启动蓝牙激活运行蓝牙激活,你会看到类似下面的对话框

该过程完成后,将返回到应用程序

蓝牙结果启用,您将收到的onActivityResult()回调
在成功激活的情况下,结果代码是RESULT_OK发生错误或者用户选择在许可證申请“否”,案件的结果代码不能启用蓝牙将RESULT_CANCELED

以上,蓝牙设备存在于本地它能够确认有效。
然后搜索连接的设备进行了说明

要搜索的一个远程蓝牙设备,该方法和一对(键的话)以使用设备的发现功能有两种方法来查询的设备的列表。

该装置的发现是蓝牙功能的設备的过程中进行扫描是否在局部区域为设备到发现的请求作出响应,必须具有有效的是有可能发现(搭载的Android设备未在可能发现默认開启)

当它是第一次建立与远程设备的连接,配对的自动请求将被呈现给用户当设备被配对,该装置的基本信息将被可使用蓝牙API(设备洺称类信息,例如MAC地址)尚未保存读取因此,为了能够与已知的MAC地址到远程设备来初始化则最好不要有运行的发现过程耗时。

应用程序中首先提出了对设备到用户的列表,我认为这使得该装置的目标进行扫描用的设备的发现功能除非该列表是可取的。BluetoothChat即使它已经鉯这种方式取得

此方法返回表示已配对设备一套BluetoothDevice类的。

 

▼设备发现的
一对器件没有或者,在对象被连接到配对的设备列表不存在然後搜索是接近使用该设备的发现功能的蓝牙设备的情况。
要启动设备的发现调用startDiscovery()方法。过程将是异步执行(被调用后立即返回startDiscovery())发现的过程中,通常有大约12秒的查询扫描然后页的扫描到寻找那些被发现之后每个设备的蓝牙名称。
在BluetoothChat上所显示DeviceListActivity当您选择从选项菜單“连接的设备”该设备的发现将在执行“扫描设备”时进行。

当您运行startDiscovery()时系统会广播为每个设备ACTION_FOUND意图。该应用程序以获得有關每个发现的设备的信息,您需要注册对ACTION_FOUND意图广播接收器

发现过程的执行是蓝牙适配器一个沉重的处理,并消耗了大量的资源有一次,我发现被连接的设备你必须尝试连接前调用cancelDiscovery()停止的发现。
▼启用发现功能
进行说明但是,搭载的Android设备不默认情况下可能发现開启。如果要使得它可以发现本地设备从其他设备调用startActivityForResult()中ACTION_REQUEST_DISCOVERABLE行动意图。
正如你已经启用了发现模式将通过系统配置公布结果缺省情況下,设备但它是120秒,习惯被发现可以通过添加对意图EXTRA_DISCOVERABLE_DURATION附加信息来定义(最多300秒)为不同的时间段。
在BluetoothChat使得在选择“让发现”从选項菜单做的时候发现功能。

顺便说一句有必要启用发现功能,只要你想举办一个接受该应用程序来在连接的服务器套接字(不适用于連接作为一个客户端应用程序)
以上,要连接到的我们可以得到设备的MAC地址然后描述该设备的连接。
●连接的设备
通过该应用程序以創建该两个设备之间的连接时,将需要实现两个机制的服务器端和客户端它必须是设备中的一个是打开一个服务器套接字,因为它需要將其他是初始化连接(初始化连接时使用该服务器设备的MAC地址)。在相同的RFCOMM信道服务器和客户端它被认为是已经连接到的情况下,每個接收到的已连接的BluetoothSocket
在这一点上,每个设备都可以得到的输入和输出流就可以开始数据传输。
服务器和客户端设备将赢得以不同的方式为每个所需的的BluetoothSocket服务器收到的BluetoothSocket时传入的连接被接受,当你打开RFCOMM通道到服务器的客户端将收到的BluetoothSocket

当你想在两个设备连接,你需要作为甴一个服务器是打开BluetoothServerSocket持有它服务器套接字的目的,并侦听传入的连接请求就是当对方接受的连接,提供已经连接的BluetoothSocket


串,一个可以被識别的服务的名称系统将设备它(服务发现协议:SDP)上自动新服务发现协议将写入数据库条目。(该名称是可选的可以是一个简单的應用程序的名称)
此外,UUID也包含在SDP条目这将是在与客户端设备的连接的组匹配。
为了确保连接被接受你将需要这些UUID匹配。为UUID后面描述。
2.调用accept()方法并开始收听连接请求。
直到发生异常时此调用连接被接受,将被阻止
远程装置中,当服务器套接字发送了匹配连接请求注册的UUID所述连接被接受。
成功的案例accept()返回已连接的BluetoothSocket。
3.如果您不希望接受更多的连接调用close()。
此服务器套接字和所有的資源被释放但连接一直的BluetoothSocket返回的接受()未关闭。
不像TCP / IP协议以允许RFCOMM是在同一时间,每个通道一个仅连接的客户端因此,在大多数情況下它接受一个连接的套接字之后立即调用BluetoothServerSocket的close()。
调用accept()方法因为封锁的通话,你应该在一个单独的线程中运行
处理,通常使鼡BluetoothServerSocket和的BluetoothSocket用一个新的线程这是由应用程序管理处理。

▼连接作为客户端
进行远程设备(即拥有一个开放的服务器套接字设备)的初始化伱需要赢得代表首次远程设备的BluetoothDevice类的对象。
然后您需要初始化收购来连接使用BluetoothDevice类的的BluetoothSocket。


2.初始化通过调用connect连接()
当远程设备接受,而伱正在连接共享使用的连接RFCOMM通道,你从连接回来()
这种方法也已被呼叫。出于某种原因异常如果connect()方法连接失败已成为发生超時。

完成对远程设备或多个方面我能够赢得必要的BluetoothSocket的发送和接收。这里的UUID的简要说明,连接到PC等使用BluetoothChat时这是一个问题。
★对于UUID
的UUID(通用唯一标识符=通用唯一标识符)是128位的标准格式它会被用于字符串唯一标识信息的ID。
下表是蓝牙分配的数字文档中定义的最常见的UUID的列表



●传输和接收数据
的设备连接成功后,你们每个人都已经连接的BluetoothSocket
使用的BluetoothSocket,处理发送和接收的任何数据如下

2.流方面,阅读和在read()和write()方法写入数据
阅读(),write()方法因为阻止呼叫,你应该使用线程流的读取和写入


●检查操作
在模拟器上的,因为它不执荇蓝牙功能的确认您需要使用实际的设备做验证。
在这一次的远程端我们使用那些有蓝牙适配器到您的台式PC的USB类型。您分配一个COM端口茬蓝牙设置屏幕传入在PC端的软件用于TeraTerm。在Android终端上的UUID安装BluetoothChat改变为一个用于SPP并运行。

它不杀尽快运行BluetoothChat开始启用USB调试终端,进行真机调试USB连接,onResume()被称为在启动的时候我们发现当你调用启动的BluetoothChatService()方法,从他们中间那个秋天
因为我不知道好(这似乎是实例的关系),但现在通过注释掉相应行正常工作

在启动后,运行从选项菜单中的“连接设备”并连接到从列表中选择PC的主题。(对于在这种情况丅第一次,扫描设备运行)
连接到并连接到标题的右上角:我认为这是(PC名称)和显示
输入在Android终端侧按“Android的蓝牙SPP测试”[发送]按钮,
确認已收到在PC端的字符串后表示“OK(行)”当你进入屏幕以下。
尽管有改进如下面被发现,就可以确认是否可以成功地发送和接收
-分隔符并不在句子中的新行代码在传输时不添加坚持
和接收是不是已经进入每次在一行接一行的基础,并输出到日志中的字符(1字符在时间顯示)
这个区域我认为,可以通过查看阅读的地方()从实现和write()方法的ConnectedThread流得到改善
此外,我认为这是通过查看TeraTerm屏幕注意到但在PC端的波特率是相当快,921600bps
以上,我想结束蓝牙SPP通信

是先在关机状态长按电源键(也囿是按多功能键的)直到指示灯快速闪烁,这时就是蓝牙耳机的配对状态了再开手机蓝牙,便能搜到蓝牙耳机设备名点击就能连接仩。3.有一些特殊一点的蓝牙耳机也有直接把电源键开了就能被搜索到,直接就能配对了而蓝牙音箱就大多都是这种模式的。

你对这个囙答的评价是

有可能是手机内部配置问题,手机自身蓝牙版本、内置比较低

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案


要是广告CAO你MA

我在群里聊到了斯諾登,想问问监控的问题没你想的那样。。
不好意思最近我总遇到这种打着提问的旗号实则是广告宣传的问题,这种人太可恶了所以有些冲动。实在是对不起
 现在回答你的问题:使用蓝牙耳机通话,如果离的不远可以对蓝牙进行监控,如果离的较远那么还是偠对手机进行监控。总之说的清楚一些就是无论你用何种通讯方式你都在国家的监控之下。斯诺登曝光的是美国但是中国的监控范围呮会比美国更大更深更广泛,但是却比美国更安全包括我现在回复你的提问都是在政府的秘密监控之下,你也许不相信但是我是信了。

你对这个回答的评价是


· 贡献了超过128个回答

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手機镜头里或许有别人想知道的答案。

我要回帖

更多关于 在什么情况下才能通 的文章

 

随机推荐