我的應用應該通過藍牙檢查周圍是否存在某個Arduino服務器,然後烘烤適當的消息。通過藍牙搜索可用設備的問題android
這是當用戶按下按鈕搜索服務器的代碼:
public void onClick(View v) {
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
if (device.getName().equals("ARD_SPP")) {
sendButton.setVisibility(View.VISIBLE);
Toast.makeText(ConnectActivity.this, "Arduino server found, please sign up 1111", Toast.LENGTH_SHORT);
break;
}
}
}
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(discoveryResult, filter);
mBluetoothAdapter.startDiscovery();
}
和代碼內廣播接收器:
public void onReceive(Context context, Intent intent) {
Boolean b = false;
String action = intent.getAction();
ProgressDialog dialog = new ProgressDialog(ConnectActivity.this);
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)){
dialog.setMessage("Searching for Arduino server...");
dialog.show();
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
dialog.dismiss();
if (!b)
Toast.makeText(ConnectActivity.this, "Server not found", Toast.LENGTH_SHORT).show();
}
else if (BluetoothDevice.ACTION_FOUND.equals(action)){
String deviceName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
if (deviceName.equals("ARD_SPP")) {
Toast.makeText(ConnectActivity.this, "Arduino server found, please sign up 2222", Toast.LENGTH_SHORT).show();
sendButton.setVisibility(View.VISIBLE);
openButton.setVisibility(View.GONE);
b = true;
dialog.dismiss();
}
}
}
我有三個問題與此有關。
首先,我遇到了「未找到服務器」消息的問題。即使在arduino在附近時也顯示出來。我真的不知道該把哪行放到我的代碼中。我試圖把它放在不同的代碼中,但我無法得到所需的代碼。
其次,找到服務器的消息顯示兩次。我在廣播接收器裏面敬酒,而不是在pairedDevices裏面敬酒(在這個之後我把1111識別出哪個麪包被顯示)。我不明白什麼是第二次執行該敬酒的代碼部分。
而且我還遇到了進度對話框的問題。我無法從屏幕上刪除對話框,即使找到服務器,它仍然存在。我將dialog.dismiss()放在發現完成的塊和找到的設備中,但它仍然在屏幕上。
有沒有人請幫助我?
我搬到那三行OnReceived()之外,實際上只是上面的行公共無效的onReceive()但隨後應用程序崩潰。我收到該應用停止的消息。我現在完全混淆了,代碼中的一切都是一樣的,只是我移動了這三行。這是怎麼回事? – MarkoDj
對不起,我忘了告訴你改變progressDialog創建的位置。查看我的編輯帖子以獲取更多信息。 –
現在正在工作,我確實喜歡你在編輯答案中說過。非常感謝你! – MarkoDj