変更できるシステム設定と変更できないシステム設定 (セキュリティで保護された設定) のリストを見つけましたが、Wifi-Direct (ICS) の有効化/無効化はどちらにもありません。アプリの起動時に Wi-Fi Direct を自動的にオンにするにはどうすればよいですか?
3 に答える
残念ながら、これを達成するための公的な方法はありません。ICS と JB の両方の設定アプリは、マネージャー クラスの隠しメソッドを使用して、サービスの有効/無効を切り替えます。
- ICS では、WifiP2PManager.enableP2P() と WifiP2PManager.disableP2P() が使用されていましたが、どちらも隠しメソッドでした。
- JB では、NsdManager.setEnabled() が使用されます。
これらのクラスにはメソッドが存在するため、可能です。ただし、この違いにより、アプリケーションから直接機能を提供するためには、バージョン固有のリフレクション コードを作成する必要があります。
より良い解決策は、サービスが有効になっているかどうかを確認し、[ワイヤレス設定] ページに直接移動するダイアログをユーザーに表示して、必要に応じて WiFi Direct を有効にすることです。
JBは同時実行の概念を導入しています。これは、wifiがオンになっている限り、アプリケーションが直接wifiをオンにする必要がないことを意味します。
ICSの場合、ユーザーをワイヤレス設定に移動して、ユーザーがオンにできるようにするのが最善です。
WiFiマネージャーを使用しようとしましたか?アクティビティ内で次のように切り替えることができるはずです。
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (!wifi.isWifiEnabled()){
wifi.setWifiEnabled(true);
}
これでWIFIがオンになるはずですが、Wifi接続があることを保証するものではありません。WifiManagerを使用してWifiInfoを検索することもできます
WifiInfo wifiInfo = wifi.getConnectionInfo();
または、アクセスポイントにpingを実行します
if (wifi.pingSupplicant()){
//at least connected to a network
}