java - 如何调用线程方法

标签 java android bluetooth

所以我对java很陌生,所以要温柔。
我正在尝试通过蓝牙连接两部手机。我创建了一个套接字,但我应该如何使用它?我的意思是,蓝牙教程说我应该调用 public void write(byte[] bytes) 来发送数据,但是如何发送数据呢?我创建了按钮,分配了“onClick”方法,但是然后呢?我应该如何调用 ConnectedThread 形式 UI 线程 中的方法?这是教程中的示例。

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;
        Message msg = mainHandler.obtainMessage();
        Bundle bundle = new Bundle();
        String btnTxt = "Socket aquizaired";
        bundle.putString("myKey", btnTxt);
        msg.setData(bundle);
        mainHandler.sendMessage(msg);
        // 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) { }
    }
}

UI线程中我有类似的东西

private void sendSms (){   // method assigned to button "onClick"
    // i want to send some text here, like "hello" or something...
    //???????????????????????????
}

最佳答案

android sdk 中的示例有一个非常好的蓝牙聊天示例,你应该看看。

public void write(byte[] out) {
    ConnectedThread r;
    synchronized (this) {
        if (mState != STATE_CONNECTED) return;
        r = mConnectedThread;
    }
    r.write(out);
}

关于java - 如何调用线程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200237/

相关文章:

java - 如何在父类(super class)中重用@Autowired bean?

java - Android内存泄漏异常

android - 除非正在播放音频,否则不会收到 KeyEvent.KEYCODE_MEDIA_NEXT

iphone - 需要兼容的 AES 代码为 Iphone、Android、Windows/XP 加密/解密

java - 如何在 Java 中将格式化程序设置为变量?

javascript - Web蓝牙API : How to get current device's id

iphone - 继续 session 到游戏包中的下一个 View

java - Flink Quickstart 中 Eclipse IDE 中缺少依赖项

java - AddFolderListener 在某些设备中有效,但在其他设备中无效

Java:唯一的 10 位 ID