1

ユーザーが現在アプリを使用しているときに、Bluetooth搭載ビーコンをスキャンするAndroidアプリに問題があります。さまざまなビューが読み込まれているときにアプリがAPIからデータを読み込んでいます。時には、ときに、このエラーが発生し、1つの要求が失敗したビュー(タイムアウト)をクリックし続ける: Android 6(Marshmallow)Wifi + Bluetoothで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にアップデートした場合、Samsung S6のみでこの問題が発生します。アプリがフォアグラウンドにあるので、アプリが積極的に使用されているため、Dozeまたはスタンバイ(Android 6の新機能)とは思われません。しかし、同じ問題は、アプリがバックグラウンドにある(テストするのが難しい)ときに発生する可能性があります。

  • Wi-Fi(デバイスが4Gネットワ​​ークを使用するため)またはBluetooth(またはその両方)をオフにすると、問題は発生しなくなります。
  • LG Nexus 5(Android 6.0.1とも)では、この問題は発生しません。我々が使用
  • ビーコンライブラリ:http://altbeacon.github.io/android-beacon-library/(バージョン2.7)

誰もが、我々は問題を探してくださいアイデアを持っていますか?前もって感謝します。

答えて

3

これは私がS6でこれを聞いた最初の報告であるが、これはネクサス4、ネクサス7、モトGとモトXのような他の装置に共通の問題でこれらのデバイスの経験のWiFi間干渉同じ無線周波数帯を共有し、一部のデバイスモデルではチップとアンテナを共有するブルートゥースラジオであるがあります。 Nexus 4とMoto Gでは、問題が非常に悪く、Bluetoothスピーカーを使用して音楽をストリーミングすることは不可能です。したがって、問題はビーコンに固有の問題ではありません。

は、既知の回避策はありませんが、あなたは、デバイスモデルを検出することができ、問題であることが知られている場合は、無線LANをオフにするようにユーザに促す。 (適切な通知がある場合)

以前のAndroidバージョンのS6にも同じ問題が存在するかどうかは興味深いでしょう。そうであれば、これは、少なくともS6のファームウェアで修正が可能であることを示唆しています。

完全公開:私はAndroid Beacon Libraryのオープンソースプロジェクトの主任開発者です。

+0

ありがとうございます。私たちは干渉の問題について聞いたことがありますが、それは不思議なことにAndroid 6のような問題になっています。まだAndroid 5を使用しているユーザーでは問題はありません。うまくいけばサムスンはこれを修正することができますあなたはこの問題をSamsungに連絡する方法を知っていますか? – TomWebDev

+0

申し訳ありませんが、Samsungに連絡がありません。 – davidgyoung

+0

これは、サムスンデバイス – TomWebDev

0

setHostnameVerifier(new BrowserCompatHostnameVerifier())を使用していますか?はいの場合は、Android 6.0に新しいホスト名ベリファイアが付属しているため、削除します。

関連する問題