Java Android Bluetooth write()方法
我正在尝试使用本教程创建蓝牙应用程序: 存在ConnectedThread类: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
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(“您的消息”)代码>就是这样。我认为,用线程扩展类可以在整个活动中以某种方式进行访问,就像某种单例一样。我需要更多地了解这一点。谢谢我突然提出了一个问题。它有机会工作吗?