LoginSignup
1
0

More than 1 year has passed since last update.

AndroidからWifiNetworkSpecifierを使ってTHETAへ接続する方法

Last updated at Posted at 2023-03-07

目的

Androidアプリ(kotlin)でTHETAへダイレクトモード接続して、WebApiアクセスを行う。
ユーザー入力負担を減らすために、WifiNetworkSpecifierを利用する。

問題

WifiNetworkSpecifierから接続した場合、WebApiアクセスに失敗する。

Caused by: java.net.ConnectException: failed to connect to /192.168.1.1 (port 80) from /:: (port 0) after 10000ms: connect failed: ENETUNREACH (Network is unreachable)

AndroidOS設定からTHETAに接続すると、WebApiアクセスが正常に行えた。
そのため、WebApiやhttpアクセスが問題ではないことが分かった。

解決方法

THETAフォーラムQAで解決方法が見つかった。
Android公式サンプルには記述されていない2行を追加すればOK。


    override fun onAvailable(network: Network?) {
        //下記2行を追加する。
        super.onAvailable(network)
        connectivityManager.bindProcessToNetwork(network);
    }

追記

THETA切断時は下記コードが必要だった。
Android公式
stackoverflow

connectivityManager.bindProcessToNetwork(null) //これを忘れるとTHETA切断後にWiFi接続しても、インターネットにアクセスできない。
connectivityManager.unregisterNetworkCallback(networkCallback)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0