我一直在遵循Android蓝牙通讯指南
为确切说明我要做什么,将两个设备配对后,每个设备(服务器和客户端)上都会打开两个不同的活动,其中服务器活动上我有不同的按钮,而客户端活动上只有一个textview。我希望能够按服务器设备上的按钮并将其显示在客户端上。
我设法在两个设备之间建立了连接,但现在我想发送无法执行的数据。
他们给出了以下代码进行数据传输:
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
break;
}
}
}
/* Call this from the main activity to send data to the remote device */
public void write(byte[] bytes) {
try {
mmOutStream.write(bytes);
} catch (IOException e) { }
}
/* Call this from the main activity to shutdown the connection */
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) { }
}
}
但是这行会产生错误
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer).sendToTarget();
并且在指南中没有解释。我不知道什么是mHandler或做什么。
除了错误之外,我什至都不真正知道将这些代码放在哪里。应该在我打开的第二个活动(服务器和客户端)中还是在主要活动中?如果在“服务器”活动中,是否应在onClick方法中为每个按钮发送不同字节代码的所有按钮?在这段代码中,我们如何区分谁在发送和谁在接收?
查看Google在SDK中提供的BluetoothChat示例。它将向您展示如何通过蓝牙实现基本的文本发送。
我对同一主题进行了研究,发现android设备是a2dp源,音频只能从a2dp源流式传输到a2dp接收器。A2dp接收器可以是蓝牙耳机或蓝牙扬声器。 但我的问题是,Android应用程序“蓝牙音乐播放器”是如何工作的? 它允许从一部手机到另一部手机进行流媒体传输。因此,在这种情况下,收听移动设备必须充当接收器。这怎么可能?他们是否使用其他配置文件而不是a2dp? 好吧,这可能是他们使用的不同配置文
有人遇到过解释如何做到这一点的文档/教程吗?技术上有可能吗?或者苹果有没有施加某种限制来阻止这种情况? 我发现的另一个选择是蓝牙上的Bonjour。这是否是一个更适合这种类型的操作的选择?
我正在考虑构建一个Android应用程序,允许通过蓝牙将音频流式传输到Android手机。我以前在Stackoverflow上读过类似的问题,根据我的理解,A2DP不能用,因为Android不能成为A2DP接收器。 理论上,我认为HFP或HFP AG等配置文件应允许双向音频流。在Android API中,有没有办法强制蓝牙配对遵循此配置文件,或者操作系统是否决定使用哪种配置文件(例如仅当有电话呼叫
问题内容: 我正在使用蓝牙聊天功能,以便连接和接收来自蓝牙设备的数据。 我使用以下代码读取数据: 设备一直在发送数据而不会停止。 通过上面的代码,我得到以下消息: 然后转到下一行: 并且永远不会从该呼叫中返回。我猜这是因为它开始从设备读取数据,并且直到断开连接才停止。如何一次读取一定数量的字节? 编辑 除非由于它不保留代码,否则不从设备取回任何数据? 问题答案: 我改用DataInputStrea
我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。
我正在开发一款连接蓝牙物联网设备的Flitter应用程序。我正在使用Flatter_blue图书馆。该库允许扫描附近的蓝牙设备。基于该扫描,您可以“连接”到设备。没有与设备配对的概念。 根据我以前在手机上使用蓝牙的经验(连接到我的汽车和蓝牙扬声器时),我必须在Android操作系统上配对设备。 我很好奇,从高层次上讲,配对设备和连接设备之间有什么区别。此外,更具体地说,在操作系统内配对设备与扫描并