蓝牙APP 通过我自己写的APP可以连接另一部手机下载的蓝牙串口助手通信 但是反过来连接连不上 报错socekt closed() or timeout

最近在写一个关于蓝牙开发的APP
通过我写的APP来连接另一部手机下载的蓝牙串口助手通信
但是反过来不行 应该是我所写的APP的蓝牙 AcceptThread线程出了问题 但是最近看了很多博客 基本就是按照这个方法来写的
不知道是哪里的问题 下面贴出代码 和日志

图片说明

package com.example.administrator.bluetooth_stm32;



import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.os.Handler;

import java.io.IOException;
import java.util.UUID;

/**
 * 监听连接申请的线程
 */
public class AcceptThread extends Thread {
    private static final String NAME = "BlueToothClass";
    private static final UUID MY_UUID = UUID.fromString(Constant.CONNECTTION_UUID);

    private final BluetoothServerSocket mmServerSocket;
    private final BluetoothAdapter mBluetoothAdapter;
    private final Handler mHandler;
    private ConnectedThread mConnectedThread;

    public AcceptThread(BluetoothAdapter adapter, Handler handler) {
        // 使用一个临时对象,该对象稍后被分配给mmServerSocket,因为mmServerSocket是最终的
        mBluetoothAdapter = adapter;
        mHandler = handler;
            BluetoothServerSocket tmp = null;
            try {
            // MY_UUID是应用程序的UUID,客户端代码使用相同的UUID
            tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
        } catch (IOException e) { }
        mmServerSocket = tmp;
    }

    public void sendData(byte[] data) {
        if( mConnectedThread!=null){
            mConnectedThread.write(data);
        }
    }





    private void manageConnectedSocket(BluetoothSocket socket) {
        //只支持同时处理一个连接
        if( mConnectedThread != null) {
            mConnectedThread.cancel();
        }
        mHandler.sendEmptyMessage(Constant.MSG_GOT_A_CLINET);
        mConnectedThread = new ConnectedThread(socket, mHandler);
        mConnectedThread.start();
    }




    public void run() {
        BluetoothSocket socket;
        //持续监听,直到出现异常或返回socket
        while (true) {
            try {
                mHandler.sendEmptyMessage(Constant.MSG_START_LISTENING);
                socket = mmServerSocket.accept();
            } catch (IOException e) {
                mHandler.sendMessage(mHandler.obtainMessage(Constant.MSG_ERROR, e));
                break;
            }
            // 如果一个连接被接受
            if (socket != null) {
                // 在单独的线程中完成管理连接的工作
                manageConnectedSocket(socket);
                try {
                    mmServerSocket.close();
                    mHandler.sendEmptyMessage(Constant.MSG_FINISH_LISTENING);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            }
        }
    }





    /**
     * 取消监听socket,使此线程关闭
     */
    public void cancel() {
        try {
            mmServerSocket.close();
            mHandler.sendEmptyMessage(Constant.MSG_FINISH_LISTENING);
        } catch (IOException e) { }
    }


}

https://blog.csdn.net/sinat_27064327/article/details/80527460