2016/10/26
Android で登録済みの Wi-Fi Access Point 一覧を取得する
プログラム全般、無節操に手を出しまくってみる
Unity LauncherUbuntu 16.04 LTS に Android Studio を登録してから、"Update&Restart" を押しても Update が行われなくなってしまいました。
Android Studio が終了するものの、その後何も起こらず、手動で起動してもアップデートされていないのです。
で、調べてみたところ、既に報告がありました。
> 参考
>
> [Android Studio: "Update & Restart" doesn't work - Stack Overflow](http://stackoverflow.com/questions/25379665/android-studio-update-restart-doesnt-work)
Android Studio を起動する時に余計なオプションをつけると、うまくいかないようです。
また、`android-studio` のインストールされているディレクトリの書き込み権限がない場合も同じような問題が起こります。
こちらはエラーメッセージにその旨が表示されるのでわかりやすいです。
> この記事は [Android の Wi-Fi 実装に関する情報のまとめ](http://kokufu.blogspot.jp/2016/10/android-wi-fi_19.html) の一部として書かれました Wi-Fi 機能の有効・無効を切り替えるには、`WifiManager.setWifiEnabled()` を実行します。 ### コード ```java // Activity 等の Context 内で WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); // 有効にする wm.setWifiEnabled(true); // 無効にする wm.setWifiEnabled(false); ``` ### パーミッション このコードを実行するには `android.permission.CHANGE_WIFI_STATE` パーミッションを AndroidManifest.xml で設定する必要があります。 ```xml``` ### 現実的な実装 実際は、以下のように Wi-Fi の状態を確認してから使用することが多くなると思います以下のコードを実行する場合は、`android.permission.ACCESS_WIFI_STATE` パーミッションも設定する必要があります。 ```java // Click する度に On/OFF を切り替える @Override public void onClick(View v) { WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); if (wm.isWifiEnabled()) { // Wi-Fi が有効な場合は無効にする wm.setWifiEnabled(false); } else { // 有効にしている最中は意味がないので、状態を確認 // ただし、WIFI_STATE_ENABLING 中に setWifiEnabled() を呼んでも問題はない if (wm.getWifiState() != WifiManager.WIFI_STATE_ENABLING) { wm.setWifiEnabled(true) } } } ``` 参考[穀風: Android で Wi-Fi 機能が現在有効かどうか調べる](http://kokufu.blogspot.jp/2016/10/android-wi-fi_60.html)
> この記事は [Android の Wi-Fi 実装に関する情報のまとめ](http://kokufu.blogspot.jp/2016/10/android-wi-fi_19.html) の一部として書かれました Wi-Fi 機能の ON/OFF を調べます。 また、Wi-Fi の ON/OFF 切り替え時には状態があり、より正確な制御をするためには、状態を確認する必要があります。 ### コード ```java // Activity 等の Context 内で // Wi-Fi ON/OFF の取得 WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); boolean isWifiEnabled = wm.isWifiEnabled(); // 状態の取得 // WifiManager.WIFI_STATE_DISABLED // WifiManager.WIFI_STATE_DISABLING // WifiManager.WIFI_STATE_ENABLED // WifiManager.WIFI_STATE_ENABLING // WifiManager.WIFI_STATE_UNKNOWN int wifiState = wm.getWifiState() ``` ### パーミッション このコードを実行するには `android.permission.ACCESS_WIFI_STATE` パーミッションを AndroidManifest.xml で設定する必要があります。 ```xml``` ### isWifiEnabled と wifiState との関係 `android.net.wifi.WifiManager` のソースコードAndroid 7.0 Nougatは以下のようになっています。 つまり、Wi-Fi の変化時、`isWifiEnabled` は `false` であり、細かい状態を `wifiState` から取得しなければなりません。 ```java public boolean isWifiEnabled() { return getWifiState() == WIFI_STATE_ENABLED; } ``` ### GUI上での表示 GUI 上では Wi-Fi の設定から確認可能な項目です。 設定 → 無線とネットワーク → Wi-Fi
アプリケーション開発から組み込みまで手を出しているフリーランスのエンジニア
何故か C,C++ の仕事をすることが多いけど、本当は Java や C# が好き
最近は Android がらみ多し