Most visited

Recently visited

Added in API level 5

BluetoothSocket

public final class BluetoothSocket
extends Object implements Closeable

java.lang.Object
   ↳ android.bluetooth.BluetoothSocket


连接或连接蓝牙插座。

蓝牙套接口类似于TCP套接字: SocketServerSocket 在服务器端,使用BluetoothServerSocket创建侦听服务器套接字。 当连接被BluetoothServerSocket接受时,它将返回一个新的BluetoothSocket来管理连接。 在客户端,使用单个BluetoothSocket来启动传出连接并管理连接。

最常见的蓝牙套接字类型是RFCOMM,它是Android API支持的类型。 RFCOMM是一种通过蓝牙实现的面向连接的流媒体传输。 它也被称为串行端口配置文件(SPP)。

要创建一个BluetoothSocket ,用于连接到已知的设备,使用BluetoothDevice.createRfcommSocketToServiceRecord() 然后致电connect()尝试连接到远程设备。 此呼叫将阻塞,直到连接建立或连接失败。

要创建 BluetoothSocket作为服务器(或“主机”),请参阅 BluetoothServerSocket文档。

连接套接字后,无论是作为客户端启动还是作为服务器接受,都可以通过调用 getInputStream()getOutputStream()来打开IO流,以分别检索自动连接到套接字的对象 InputStreamOutputStream

BluetoothSocket是线程安全的。 特别是, close()将始终立即中止正在进行的操作并关闭套接字。

注意:需要 BLUETOOTH权限。

Developer Guides

有关使用蓝牙的更多信息,请阅读 Bluetooth开发人员指南。

也可以看看:

Summary

Constants

int TYPE_L2CAP

L2CAP套接字

int TYPE_RFCOMM

RFCOMM插座

int TYPE_SCO

SCO套接字

Public methods

void close()

关闭此流并释放与其关联的所有系统资源。

void connect()

尝试连接到远程设备。

int getConnectionType()

获取底层连接的类型。

InputStream getInputStream()

获取与此套接字关联的输入流。

int getMaxReceivePacketSize()

获取底层传输的最大支持接收数据包大小。

int getMaxTransmitPacketSize()

获取底层传输的最大支持传输数据包大小。

OutputStream getOutputStream()

获取与此套接字关联的输出流。

BluetoothDevice getRemoteDevice()

获取此套接字连接或连接到的远程设备。

boolean isConnected()

获取此套接字的连接状态,即是否存在与远程设备的活动连接。

Inherited methods

From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Constants

TYPE_L2CAP

Added in API level 23
int TYPE_L2CAP

L2CAP套接字

常量值:3(0x00000003)

TYPE_RFCOMM

Added in API level 23
int TYPE_RFCOMM

RFCOMM插座

常数值:1(0x00000001)

TYPE_SCO

Added in API level 23
int TYPE_SCO

SCO套接字

常量值:2(0x00000002)

Public methods

close

Added in API level 5
void close ()

关闭此流并释放与其关联的所有系统资源。 如果流已经关闭,则调用此方法不起作用。

Throws
IOException

connect

Added in API level 5
void connect ()

尝试连接到远程设备。

此方法将阻塞,直到建立连接或连接失败。 如果此方法没有异常返回,则此套接字现在已连接。

设备发现过程中,不应尝试创建与远程蓝牙设备的新连接。 设备发现是蓝牙适配器上的一个重量级过程,会显着降低设备连接速度。 使用cancelDiscovery()取消正在进行的发现。 发现不是由Activity管理的,而是作为系统服务运行的,因此即使应用程序没有直接请求发现,也应该始终调用cancelDiscovery() ,这是可以肯定的。

close()可用于从另一个线程中止此调用。

Throws
IOException on error, for example connection failure

getConnectionType

Added in API level 23
int getConnectionType ()

获取底层连接的类型。

Returns
int one of TYPE_RFCOMM, TYPE_SCO or TYPE_L2CAP

getInputStream

Added in API level 5
InputStream getInputStream ()

获取与此套接字关联的输入流。

即使套接字尚未连接,输入流也会返回,但对该流的操作将抛出IOException,直到关联的套接字连接。

Returns
InputStream InputStream
Throws
IOException

getMaxReceivePacketSize

Added in API level 23
int getMaxReceivePacketSize ()

获取底层传输的最大支持接收数据包大小。 使用它可以优化在输入流上完成的读取操作,因为任何调用读取操作都会返回最大字节数量 - 或者对于某些传输操作来说,该值为倍数。

Returns
int the maximum supported Receive packet size for the underlying transport.

getMaxTransmitPacketSize

Added in API level 23
int getMaxTransmitPacketSize ()

获取底层传输的最大支持传输数据包大小。 使用它来优化对输出套接字的写操作,以避免发送半满数据包。

Returns
int the maximum supported Transmit packet size for the underlying transport.

getOutputStream

Added in API level 5
OutputStream getOutputStream ()

获取与此套接字关联的输出流。

即使套接字尚未连接,输出流也会返回,但对该流的操作将抛出IOException,直到连接相关套接字为止。

Returns
OutputStream OutputStream
Throws
IOException

getRemoteDevice

Added in API level 5
BluetoothDevice getRemoteDevice ()

获取此套接字连接或连接到的远程设备。

Returns
BluetoothDevice remote device

isConnected

Added in API level 14
boolean isConnected ()

获取此套接字的连接状态,即是否存在与远程设备的活动连接。

Returns
boolean true if connected false if not connected

Hooray!