[英]Why is BluetoothSocket.connect() called before Toast.makeText().show()?
我試圖在嘗試連接到從ListView中選擇的Bluetooth
設備之前顯示Toast消息,但是問題是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();
// ...
}
});
問題是連接可能需要一點時間,並且您必須確保僅在連接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秒鍾后再進行連接和檢查
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.