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

简介:

正文

  一、结构

public static class Gallery.LayoutParams extends ViewGroup.LayoutParams

        

java.lang.Object

android.view. ViewGroup.LayoutParams

android.widget.Gallery.LayoutParams

 

  二、概述

         已连接或连接到蓝牙套接字(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 ()

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

返回值

远程设备

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582518,如需转载请自行联系原作者
相关文章
|
11月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1666 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
768 0
|
Android开发
Android 配置蓝牙遥控器键值
本文详细介绍了Android系统中配置蓝牙遥控器键值的步骤,包括查看设备号、配置键位映射文件(kl文件)、部署kl文件以及调试过程,确保蓝牙遥控器的按键能正确映射到Android系统对应的按键功能。
3740 1
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
569 2
|
Android开发
Android获取蓝牙设备列表的方法
Android获取蓝牙设备列表的方法
1160 5
|
定位技术 Android开发
Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission
Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission
1090 1
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
243 2
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了