質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

アンドロイドアプリで接続先wifiの設定を切替えるには

kumakumatan
kumakumatan

総合スコア207

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1回答

0リアクション

2クリップ

1170閲覧

投稿2017/07/23 07:45

編集2017/08/20 02:38

AndroidStudio2.3.3にて、指定のwifi(SSIDをWEPキーで認証)の接続状態を調べ、
「オン」「オフ」状態を画面に表示し、ボタンを押すことにより、接続を切替えるアプリを作成
しようとしております。

・ssid:SSID
・password:password

■AndroidManifest.xml

xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="wifi.sample.goodroid.mywifi01"> <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".WiFiActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

■WiFiActivity

java

package wifi.sample.goodroid.mywifi01; import android.annotation.SuppressLint; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ToggleButton; import android.app.Activity; public class WiFiActivity extends Activity implements OnClickListener{ private ToggleButton toggle; private WifiManager Wifi; @SuppressLint("WifiManagerLeak") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wi_fi); // WifiManagerのインスタンスを取得する Wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); //WiFi機能をONにする WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); if (wifiManager.isWifiEnabled() == false) { wifiManager.setWifiEnabled(true); } //WEPのSSID設定 String ssid = "SSID"; WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssid + "\""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.wepKeys[0] = "\"password\""; config.wepTxKeyIndex = 0; int networkId = wifiManager.addNetwork(config); // 失敗した場合は-1となります wifiManager.saveConfiguration(); wifiManager.updateNetwork(config); // トグルボタンのインスタンスを取得する toggle = (ToggleButton) findViewById(R.id.toggleButton1); // トグルボタンの状態初期化 if(Wifi.isWifiEnabled()){ // 現在のWifiがONだった場合、トグルボタンをONに切り替える toggle.setChecked(true); }else{ // 現在のWifiがOffだった場合、トグルボタンをOFFに切り替える toggle.setChecked(false); } } @Override public void onClick(View v) { if(Wifi.isWifiEnabled()){ // 現在のWifiがONだった場合、OFFに切り替える Wifi.setWifiEnabled(false); }else{ // 現在のWifiがOFFだった場合、ONに切り替える // Wifi.setWifiEnabled(true); //WiFi機能をONにする WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } //WEPのSSID設定 String ssid = "SSID"; WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssid + "\""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.wepKeys[0] = "\"password\""; config.wepTxKeyIndex = 0; int networkId = wifiManager.addNetwork(config); // 失敗した場合は-1となります wifiManager.saveConfiguration(); wifiManager.updateNetwork(config); //SSIDに接続する // WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); // int networkId = 0; // 上記設定で取得できたものを使用 String targetSSID = "SSID"; // WiFi機能が無効の状態で呼び出されるとSSID検索の所でnullとなるので念のため例外処理を行なう try { // ssidの検索を開始 wifiManager.startScan(); for (ScanResult result : wifiManager.getScanResults()) { // Android4.2以降よりダブルクォーテーションが付いてくるので除去 String resultSSID = result.SSID.replace("\"", ""); if (resultSSID.equals(targetSSID)) { // 接続を行う if (networkId > 0) { // 先に既存接続先を無効にしてから接続します for (WifiConfiguration c0 : wifiManager.getConfiguredNetworks()) { wifiManager.enableNetwork(c0.networkId, false); } wifiManager.enableNetwork(networkId, true); } break; } } } catch (NullPointerException e) { // 適切な例外処理をしてください。 } } } }

■activity_wi_fi.xml

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ToggleButton" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="82dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:text="Wi-Fi状態" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:layout_marginStart="24dp" android:layout_marginTop="37dp" /> </RelativeLayout>

*WiFiActivityの箇所を変更する事により、ボタンの「オン」「オフ」により、
登録したssidのwifiが接続、切断ができるようにしたいのですが、どのようにしたら
良いかご教授いただきたくお願い致します。

アプリを開いた際、wifiに接続はできるのですが(OFFの場合、接続ONになる)、ボタンの「ON」「OFF」での制御がうまくいかなく困っています。
「public void onClick(View v) {」の処理でボタンのON.OFFの処理命令を記載しようとしておりますが、うまくいかなく困っています。

どうかご教授、宜しくお願いします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。