Android WearからHTTPリクエストできない
Android Wearから音声入力でツイートできるTwitterクライアントをTwitter4jで作っているんだけど、Android Wearから直接はHTTPリクエストできなかった。
エミュレータからだとホスト名が解決できないし
Unable to resolve host “api.twitter.com”: No address associated with hostname
実機(Moto360)からだとホスト名は解決できてるけど接続ができない。
failed to connect to api.twitter.com/199.16.158.169 (port 443) after 20000ms
Twitter4jじゃなくて普通にHttpURLConnectionを使って他のサーバーにリクエストしても同じ結果になる。
調べてもコレぐらいしか困ってる人がいない。全員Wearから他のサーバーへは接続できなくて未解決
Does Android Wear support HttpURLConnection – getting EOFException – Stack Overflow
ドキュメントにはネットワーク使えないって書いてないけど、無理なものは無理なので次は設計時に気をつける
Creating Wearable Apps | Android Developers
Wearable apps can access much of the standard Android APIs, but don’t support the following APIs:
android.webkit
android.print
android.app.backup
android.appwidget
android.hardware.usb
解決方法
スマホ側をproxyにするしかない。もともとWearからsendMessageしてスマホ側のWearableListenerServiceで受け取ってtweetを中継していたので、その設計に戻した。
→ Android Wearからスマホ本体側にメッセージを送る