在Android中手动设置蓝牙服务器端口

时间:2018-08-17 13:39:04

标签: android bluetooth port

我有一个正在运行的蓝牙服务器(Android应用程序)。我想设置一个特定的蓝牙端口以供收听。这样做的原因是,客户端连接大约需要10-15秒,因为它需要首先发现服务器(我进行扫描)。

创建服务器的代码如下:

            BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
            UUID my_uuid = UUID.fromString("12345678-f6ff-4f6f-1f1f-f8f8f8fffff8");
            try {
                BluetoothServerSocket serverSocket = adapter.listenUsingRfcommWithServiceRecord("myBluetoothServer", my_uuid);

                sock1 = serverSocket.accept();
                i_s = sock1.getInputStream();
                o_s = new OutputStreamWriter(socket.getOutputStream());
                new Thread(writter).start();
     ...

问题:如何为服务器指定固定端口号?

我一直在这里看,但是不容易找到: https://developer.android.com/reference/android/bluetooth/BluetoothSocket?hl=ur

我正在寻找类似serverSocket.setPort(myPortNumber)(伪代码)

1 个答案:

答案 0 :(得分:0)

由于蓝牙套接字不是常规的TCP / IP套接字,因此不存在端口的概念。它们只是被抽象为具有类似行为。

从代码中可以看出,您指定的是一个UUID,它是服务标识符。连接到蓝牙服务器的过程如下:

  1. 蓝牙设备扫描:您不能跳过此部分,因为您需要有效的BluetoothDevice对象
  2. 已发现设备的服务发现:这是您“检查”蓝牙设备是否正在运行您正在寻找的服务的部分(您的服务UUID),因此您也不应该跳过此部分,除非您愿意连接到所有周围的蓝牙设备。