在过去的几天里,我一直致力于通过蓝牙与 Android 服务器和 Windows PC 套接字建立客户端-服务器套接字,以便我可以从计算机发送可在 Oculus Gear VR 应用程序上使用的信息(应用程序将在 Android 上)。我在 Android 端的蓝牙服务器套接字上遇到了一个大问题。我对 android studio 的体验只用了大约 4 天,这并没有什么帮助。我想出了如何在 Android 应用程序上创建一个常规服务器套接字来等待客户端的连接
public class MyServer {
BluetoothDevice device;
Thread m_objThread;
ServerSocket m_server;
String m_strMessage;
DataDisplay m_dataDisplay;
Object m_connected;
public MyServer()
{
}
public void setEventListener(DataDisplay dataDisplay)
{
m_dataDisplay = dataDisplay;
}
public void startListening()
{
m_objThread = new Thread(new Runnable() {
public void run() {
try {
m_server = new ServerSocket(2001);
Socket connectedSocket = m_server.accept();
Message clientmessage = Message.obtain();
ObjectInputStream ois = new ObjectInputStream(connectedSocket.getInputStream());
String strMessage = (String) ois.readObject();
clientmessage.obj = strMessage;
mHandler.sendMessage(clientmessage);
ObjectOutputStream oos = new ObjectOutputStream(connectedSocket.getOutputStream());
oos.writeObject("Hi..");
ois.close();
oos.close();
m_server.close();
} catch (Exception e) {
Message msg3 = Message.obtain();
msg3.obj = e.getMessage();
mHandler.sendMessage(msg3);
}
}
});
m_objThread.start();
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message status)
{
m_dataDisplay.Display(status.obj.toString());
}
};
但我不完全确定如何将其更改为蓝牙服务器套接字以创建蓝牙套接字。感谢任何帮助,我对编码相对较新,并且只在 Visual Studio 上使用过 C++,所以我在使用 Android Studio 时遇到了很多麻烦。谢谢!
您应该创建一个线程用于接受连接,另一个线程用于发送和接收数据。连接设备后,您将停止“连接线程”并启动“传输”线程。谷歌有一个很好的例子 - https://github.com/googlesamples/android-BluetoothChat