2013-01-03 179 views
0

目前,我有一個關於使用Android WiFi,藍牙API一起使用的問題。安卓:Wifi和藍牙搜索一起

(請注意,它是在應用程序開發的問題,而不是一個正常的用戶指南)

我有麻煩時,通過Wifi,同時通過藍牙搜索設備搜索設備」服務。

欲瞭解更多信息:

  • 在WiFi搜索,我使用Bonjour協議(蘋果的零配置,它可以幫助定位服務,本地網絡設備提供的工具)。我使用的Java工具是jmdns。在搜索會話期間,我創建了一個MulticastLock以接收Bonjour的多播包。

  • 藍牙搜索,我只是用BluetoothAdapter連同廣播接收器獲得藍牙設備的信息。

問題發生的搜索結果,當兩個搜索會話的上方同時執行,MYSEARCH在卓悅(WiFi版)的搜索結果從來沒有得到足夠的只有它被執行時喜歡它。

例如:當與藍牙一起搜索時,Bonjour搜索僅獲取1而不是2個設備的服務。然而,藍牙搜索結果總是足夠的。

這是多次嘗試,我肯定確認沒有任何與網絡的實力問題有關。

有沒有人遇到這個問題了嗎?

即使你的情況是關於使用WiFi與藍牙在一起,任何經驗或客人都對我非常有幫助!

科伊人。

回答

0

我做幾乎你正在做同樣的東西。 我的經驗不同之處在於:

  • 我不使用藍牙發現,因爲我知道我要連接什麼設備。我只是啓動客戶端連接。
  • 我使用Asynctasks進行後臺操作。你在用什麼?

可能存在兩個問題:由於Android的故障實現

  1. 多Asynctasks並行不執行。將我的Android API目標設置爲最新的SDK後,我遇到了類似的錯誤(因爲這是最佳實踐)。現在,在API13之後,Android Asynctask實現改變了,並且任務並沒有被並行執行(所以我的wifi線程從未開始,例如,如果藍牙線程正在運行!!!)。解決方法是放置幾行代碼,使默認執行程序再次平行,或僅使用API​​11或更低版本作爲目標版本。有關詳細信息,請參閱此thread

  2. OverTheAir之間的干擾2。就我所知,藍牙發現是您可以在藍牙上執行的最昂貴的操作。因此,2.4GHz多用途芯片可以通過無線淹沒。在內部它有WiFi和BT共存。記住2.4GHz重疊的WiFi和藍牙信道。所以我說的在同一時間在相同的主頻率上做發現可能無法正常工作那麼好。你應該調查...