我正在开发一个测量两个移动设备之间距离的Android应用程序。我已经能够获得附近启用wifi的设备的rssi,然后我用它来粗略计算通常没有很高精度的距离。为了提高准确性,我还想测量往返时间。
所以我的问题是,如果可能的话,你怎么能通过蓝牙或wifi信号从一个Android设备发送数据包然后收到响应?此外,设备必须在每种情况下配对,还是知道足够的mac地址?
答案 0 :(得分:0)
快速搜索谷歌将引导您进入Android开发教程。 There你应该找到问题的答案。但总结一下:要通过蓝牙找到其他设备,您可以使用蓝牙适配器。在那里,您可以尝试发现新的蓝牙设备或查询之前已连接到Android设备的设备列表。
使用OutputStream.write()
InputStream.read()
阅读时发送数据包
您可以在开发站点找到一个示例,但简而言之,它可能看起来像这样(教程中提供的示例的修改版本):
InputStream is = null;
OutputStream os = null;
public ConnectedThread(BluetoothSocket socket) {
try{
is= socket.getInputStream();
os = socket.getOutputStream();
} catch (IOException e) { System.out.println(e); }
}
public void run() {
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes=0; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs or the stream ends
while (bytes != -1) {
try {
// Read from the InputStream, the read bytes will be stored in the array
bytes = is.read(buffer); //reads 1024 bytes into the buffer
} catch (IOException e) {
System.out.println(e);
break;
}
}
}
/* Call this from the main activity to send data to the remote device */
public void write(byte[] bytes) {
try {
os.write(bytes);
} catch (IOException e) { System.out.println(e); }
}