1

我們的Android應用程序出現問題,當用戶正在使用該應用程序時,它會掃描帶有藍牙的信標。應用程序正在加載不同視圖時從API加載數據。有時,當繼續點擊視圖中的一個請求失敗(超時),與此錯誤:Android 6(棉花糖)Wifi +藍牙有時會導致SocketTimeoutException

java.net.SocketTimeoutException: failed to connect to www.examplehost.com/111.222.333.444 (port 80) after 15000ms 
               at libcore.io.IoBridge.connectErrno(IoBridge.java:169) 
               at libcore.io.IoBridge.connect(IoBridge.java:122) 
               at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 
               at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) 
               at java.net.Socket.connect(Socket.java:884) 
               at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117) 
               at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:434) 
               at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:105) 
               at com.android.okhttp.Connection.connect(Connection.java:1331) 
               at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1410) 
               at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) 
               at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:466) 
               at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:447) 
               at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:353) 
               at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:468) 
               at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:410) 
               at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:532) 

(這是我們的服務器的IP地址,用111.222.333.444取代它)這是一個超時(> 15秒),而之前的請求相當快。

我不會遇到與其他設備的這個問題,只有在升級到Android 6.0.1的三星S6上。由於該應用程序處於前臺,因此該應用程序正在被有效使用,因此我認爲它不是Doze或Standby(Android 6中的新增功能)。但同樣的問題可能發生在應用程序在後臺(但很難測試)。

  • 當關閉Wifi(所以設備使用4G網絡)或藍牙(或兩者)時,問題不再發生。
  • LG Nexus 5(也適用於Android 6.0.1)時,問題從未發生過。
  • 我們用信標庫:http://altbeacon.github.io/android-beacon-library/(2.7版本)

沒有任何人有一個想法,我們應該尋找問題?提前致謝。

回答

3

雖然這是我所聽到的對S6的第一份報告,這是對像的Nexus 4,Nexus 7保護的WiFi網絡之間,摩托G和摩托X.這些設備的經驗干擾其他設備的通用問題和藍牙無線電,共享相同的無線電頻段,並在某些設備型號共享芯片和天線。在Nexus 4和Moto G上,問題非常嚴重,使用藍牙揚聲器播放音樂是不可能的。所以問題不是特定於信標。

沒有已知的解決方法,但可以檢測設備型號,並且如果已知存在問題,則會提示用戶關閉WiFi。或者甚至是爲用戶做的(當然有適當的通知)。

如果在早期的Android版本的S6上存在同樣的問題,將會很有趣。如果是這樣,這表明修復可能在固件中是可能的,至少對於S6來說。

完全披露:我是Android Beacon Library開源項目的首席開發人員。

+0

謝謝你的迴應。我們已經聽說過干擾問題,但奇怪的是它已經開始成爲Android 6的一個問題。對於仍然使用Android 5的用戶,我們沒有看到任何問題。希望三星能夠解決這個問題。你知道一個聯繫三星這個問題的方法嗎? – TomWebDev

+0

對不起,我不知道三星的聯繫人。 – davidgyoung

+0

這是通過三星設備的Android更新修復 – TomWebDev

0

您是否使用setHostnameVerifier(new BrowserCompatHostnameVerifier())?如果是,請將其刪除,因爲Android 6.0附帶了新的主機名稱驗證程序。