我正在尝试显示Toast消息,然后再尝试连接到从ListView中选择的Bluetooth
设备,但是问题是Toast
消息在连接后出现,因此用户可以知道他们的设备当前是否正在尝试连接到选定的BT设备。应该是这样的:
ListView
中选择的设备btSocket.connect()
已被呼叫并已成功建立连接相反,它是这样发生的:
ListView
中选择的设备btSocket.connect()
已被呼叫并已成功建立连接请注意,当尝试连接到btSocket
时,应用程序冻结,然后解冻并继续其工作。
示例代码:
listView_myDevices.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
BluetoothSocket btSocket;
// ... Determine which device is selected, etc.
Toast.makeText(MyActivity.this, "Connecting...", Toast.LENGTH_SHORT).show();
btSocket.connect();
Toast.makeText(MyActivity.this, "Connected!", Toast.LENGTH_SHORT).show();
// ...
}
});
答案 0 :(得分:1)
问题在于连接可能需要一点时间,并且您必须确保仅在连接Toast-CONNECTED后才触发它。最快但不是最好的解决方案将是
BluetoothSocket btSocket;
Toast.makeText(MyActivity.this, "Connecting...", Toast.LENGTH_SHORT).show();
btSocket.connect();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (btSocket.isConnected()){
Toast.makeText(MyActivity.this, "Connected!", Toast.LENGTH_SHORT).show();
} }
}, 5000);
因此,您要花一些时间进行连接并在5秒钟后进行检查