Java Android Bluetooth write()方法

Java Android Bluetooth write()方法,java,android,bluetooth,Java,Android,Bluetooth,我正在尝试使用本教程创建蓝牙应用程序: 存在ConnectedThread类: private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; private final OutputStream mmOutStream; public ConnectedThread(Blue

我正在尝试使用本教程创建蓝牙应用程序:

存在ConnectedThread类:

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) { }
    }
}
注释说我需要从主活动调用write()方法,但实际上并没有ConnectedThread类的实例,它只是从另一个类启动的。我如何使用这个方法

编辑1:

我明白为什么我不能那样使用它。 它不起作用,因为ConnectedThread是在程序中的某个点定义和声明的,当程序离开它时,它就不再存在了,对吗?所以,我应该定义在整个活动中可见的ConnectedThread对象,并在Connect thread中定义它吗。相反:

ConnectedThread mConnectedThread = new ConnectedThread(mmSocket);
mConnectedThread.start();
我可以使用:

mConnectedThread = new ConnectedThread(mmSocket); 
mConnectedThread.start(); 

对吧?

“从另一个类开始”是什么意思?就像我在本教程中使用的一样:ConnectedThread在ConnectThread中开始。对不起,如果我弄错了什么。我不知道该如何发送数据。ConnectedThread类的对象在ConnectThread类中创建,并调用其方法:mConnectedThread.start();所以这是不可能的<代码>connectedThread=新的connectedThread(…);connectedThread.run();connectedThread.write(“您的消息”)就是这样。我认为,用线程扩展类可以在整个活动中以某种方式进行访问,就像某种单例一样。我需要更多地了解这一点。谢谢我突然提出了一个问题。它有机会工作吗?你说“从另一个类开始”是什么意思?就像我在本教程中使用的一样:ConnectedThread在ConnectThread中开始。对不起,如果我弄错了什么。我不知道该如何发送数据。ConnectedThread类的对象在ConnectThread类中创建,并调用其方法:mConnectedThread.start();所以这是不可能的<代码>connectedThread=新的connectedThread(…);connectedThread.run();connectedThread.write(“您的消息”)就是这样。我认为,用线程扩展类可以在整个活动中以某种方式进行访问,就像某种单例一样。我需要更多地了解这一点。谢谢我突然提出了一个问题。它有机会工作吗?