2016-09-21 4 views
0

私はRicoh Thetaカメラと通信するアプリを持っています。カメラは、WiFiネットワークとOSC(Open Spherical Camera)Webサーバー(IP 192.168.1.1、ポート80)を作成し、そこでデバイスを接続します。 WiFiのみがオンの場合はすべて正常に動作します。しかし、私もモバイルデータをONにすると、タイムアウトエラーが発生します。3G/4Gがオンの場合、ローカルのWiFiでAndroidボレーは動作しません

ここにはそれが有用であることができるかどうか確認してください、しかし、いくつかのコードです:

protected void executePost(String request, final String body, final RequestListener listener) { 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://" + mIpAddress + ":" + mPort + request, 

      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        if(listener != null) { 
         handleResponse(response, listener); 
        } 
       } 
      }, 

      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

        if(listener != null) { 
         listener.onError(error); 
        } 
       } 
      } 
    ) 
    { 
     @Override 
     public byte[] getBody() throws AuthFailureError { 

      return body == null ? null : body.getBytes(); 
     } 
    }; 

    int socketTimeout = 30000; 
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
    stringRequest.setRetryPolicy(policy); 

    stringRequest.setTag(REQUEST_TAG); 
    mRequestQueue.add(stringRequest); 
} 

のみ無線LANを使用するようにバレーボールを伝える方法はありますか?または最初に?

+0

あなたは、接続の種類を確認し、ユーザーがプロセスをさらに聞かせできるようにすることができ、このリンクあなたを助けてくれる http://stackoverflow.com/a/8548926/5372087 –

+0

ご意見ありがとうございます、問題を解決する方法を見つけました(私の答えを参照)。 –

答えて

0

OKは、申し訳ありませんが、いくつかの研究の後、私はここでは、解決策を見つけた:https://code.google.com/p/android/issues/detail?id=190974

問題は、デバイスが複数のネットワークに接続されている場合のAndroid 6.0のように、Androidは、インターネットで1に接続するということですアクセスし、他のものを無視する。礼儀正しくするために、かなり奇妙なようだが、それでも...ここ

は、私はそれが動作するために追加のコードです:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    for (Network net : connectivityManager.getAllNetworks()) { 

     NetworkInfo networkInfo = connectivityManager.getNetworkInfo(net); 

     if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { 
      connectivityManager.bindProcessToNetwork(net); 
      break; 
     } 
    } 
} 
関連する問題