从 Android 中配对的蓝牙设备读取数据
Posted
技术标签:
【中文标题】从 Android 中配对的蓝牙设备读取数据【英文标题】:Read data from paired Bluetooth devices in Android 【发布时间】:2012-06-15 08:15:03 【问题描述】:我正在开发一个从配对的蓝牙设备读取数据的 android 4.0 应用程序。我能够搜索可发现的蓝牙设备并配对设备。但是,我不确定如何通过串口从蓝牙设备读取数据? android系统支持SERIAL PORT吗?因为我在android系统中找不到像COM1或COM2这样的串口。目前,我正在使用 BluetoothSocket 来配对设备。但是,有没有办法像 Windows 一样从蓝牙串口读取数据?
socket = _devices.get(k).createRfcommSocketToServiceRecord(MY_UUID_SECURE);
socket.connect();
任何帮助表示赞赏!非常感谢。
问候,
查尔斯
【问题讨论】:
Reading data from bluetooth device in android的可能重复 【参考方案1】:是的,有。您收到的socket
可以给您一个InputStream
实例。如果socket
已连接,则您可以读取数据(char
、String
或 byte
,具体取决于您将在 InputStream
周围环绕的阅读器,如果您包装了一个)。
要使用设备打开串行端口,您必须使用用于创建套接字的 UUID 中的串行端口配置文件。网上流传的一个简单的 UUID 是
00001101-0000-1000-8000-00805F9B34FB
然后您可以创建您的套接字,连接到它,获取流并使用它们读/写字节。示例:
private static final String UUID_SERIAL_PORT_PROFILE
= "00001101-0000-1000-8000-00805F9B34FB";
private BluetoothSocket mSocket = null;
private BufferedReader mBufferedReader = null;
private void openDeviceConnection(BluetoothDevice aDevice)
throws IOException
InputStream aStream = null;
InputStreamReader aReader = null;
try
mSocket = aDevice
.createRfcommSocketToServiceRecord( getSerialPortUUID() );
mSocket.connect();
aStream = mSocket.getInputStream();
aReader = new InputStreamReader( aStream );
mBufferedReader = new BufferedReader( aReader );
catch ( IOException e )
Log.e( TAG, "Could not connect to device", e );
close( mBufferedReader );
close( aReader );
close( aStream );
close( mSocket );
throw e;
private void close(Closeable aConnectedObject)
if ( aConnectedObject == null ) return;
try
aConnectedObject.close();
catch ( IOException e )
aConnectedObject = null;
private UUID getSerialPortUUID()
return UUID.fromString( UUID_SERIAL_PORT_PROFILE );
然后,您可以在代码中的某个地方从读者那里阅读:
String aString = mBufferedReader.readLine();
您可以使用OutputStream
和不同的作家在相反的方向做同样的事情。
【讨论】:
但是您的代码不起作用。它的说法无法连接到设备 @AMIamitekh 这是一个 5 年前的问题,您希望代码能够像发布的那样工作吗?以上是关于从 Android 中配对的蓝牙设备读取数据的主要内容,如果未能解决你的问题,请参考以下文章