539
技術社區[雲棲]
android wifi 設置 控製開關
public class wifi extends Activity { private TextView mTextView01; private CheckBox mCheckBox01; /* 創建WiFiManager對象 */ private WifiManager mWiFiManager01; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView01 = (TextView) findViewById(R.id.myTextView1); mCheckBox01 = (CheckBox) findViewById(R.id.myCheckBox1); /* 以getSystemService取得WIFI_SERVICE */ mWiFiManager01 = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); /* 判斷運行程序後的WiFi狀態是否打開或打開中 */ if(mWiFiManager01.isWifiEnabled()) { /* 判斷WiFi狀態是否“已打開” */ if(mWiFiManager01.getWifiState()== WifiManager.WIFI_STATE_ENABLED) { /* 若WiFi已打開,將選取項打勾 */ mCheckBox01.setChecked(true); /* 更改選取項文字為關閉WiFi*/ mCheckBox01.setText(R.string.str_uncheck); } else { /* 若WiFi未打開,將選取項勾選擇消 */ mCheckBox01.setChecked(false); /* 更改選取項文字為打開WiFi*/ mCheckBox01.setText(R.string.str_checked); } } else { mCheckBox01.setChecked(false); mCheckBox01.setText(R.string.str_checked); } /* 捕捉CheckBox的點擊事件 */ mCheckBox01.setOnClickListener( new CheckBox.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /* 當選取項為取消選取狀態 */ if(mCheckBox01.isChecked()==false) { /* 嚐試關閉Wi-Fi服務 */ try { /* 判斷WiFi狀態是否為已打開 */ if(mWiFiManager01.isWifiEnabled() ) { /* 關閉WiFi */ if(mWiFiManager01.setWifiEnabled(false)) { mTextView01.setText(R.string.str_stop_wifi_done); } else { mTextView01.setText(R.string.str_stop_wifi_failed); } } else { /* WiFi狀態不為已打開狀態時 */ switch(mWiFiManager01.getWifiState()) { /* WiFi正在打開過程中,導致無法關閉... */ case WifiManager.WIFI_STATE_ENABLING: mTextView01.setText ( getResources().getText (R.string.str_stop_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_enabling) ); break; /* WiFi正在關閉過程中,導致無法關閉... */ case WifiManager.WIFI_STATE_DISABLING: mTextView01.setText ( getResources().getText (R.string.str_stop_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_disabling) ); break; /* WiFi已經關閉 */ case WifiManager.WIFI_STATE_DISABLED: mTextView01.setText ( getResources().getText (R.string.str_stop_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_disabled) ); break; /* 無法取得或辨識WiFi狀態 */ case WifiManager.WIFI_STATE_UNKNOWN: default: mTextView01.setText ( getResources().getText (R.string.str_stop_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_unknow) ); break; } mCheckBox01.setText(R.string.str_checked); } } catch (Exception e) { Log.i("HIPPO", e.toString()); e.printStackTrace(); } } else if(mCheckBox01.isChecked()==true) { /* 嚐試打開Wi-Fi服務 */ try { /* 確認WiFi服務是關閉且不在打開作業中 */ if(!mWiFiManager01.isWifiEnabled() && mWiFiManager01.getWifiState()!= WifiManager.WIFI_STATE_ENABLING ) { if(mWiFiManager01.setWifiEnabled(true)) { switch(mWiFiManager01.getWifiState()) { /* WiFi正在打開過程中,導致無法打開... */ case WifiManager.WIFI_STATE_ENABLING: mTextView01.setText ( getResources().getText (R.string.str_wifi_enabling) ); break; /* WiFi已經為打開,無法再次打開... */ case WifiManager.WIFI_STATE_ENABLED: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_done) ); break; /* 其它未知的錯誤 */ default: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_unknow) ); break; } } else { mTextView01.setText(R.string.str_start_wifi_failed); } } else { switch(mWiFiManager01.getWifiState()) { /* WiFi正在打開過程中,導致無法打開... */ case WifiManager.WIFI_STATE_ENABLING: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_enabling) ); break; /* WiFi正在關閉過程中,導致無法打開... */ case WifiManager.WIFI_STATE_DISABLING: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_disabling) ); break; /* WiFi已經關閉 */ case WifiManager.WIFI_STATE_DISABLED: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_disabled) ); break; /* 無法取得或識別WiFi狀態 */ case WifiManager.WIFI_STATE_UNKNOWN: default: mTextView01.setText ( getResources().getText (R.string.str_start_wifi_failed)+":"+ getResources().getText (R.string.str_wifi_unknow) ); break; } } mCheckBox01.setText(R.string.str_uncheck); } catch (Exception e) { Log.i("HIPPO", e.toString()); e.printStackTrace(); } } } }); } public void mMakeTextToast(String str, boolean isLong) { if(isLong==true) { Toast.makeText(wifi.this, str, Toast.LENGTH_LONG).show(); } else { Toast.makeText(wifi.this, str, Toast.LENGTH_SHORT).show(); } } @Override protected void onResume() { // TODO Auto-generated method stub /* 在onResume重寫事件為取得打開程序當下WiFi的狀態 */ try { switch(mWiFiManager01.getWifiState()) { /* WiFi已經在打開狀態... */ case WifiManager.WIFI_STATE_ENABLED: mTextView01.setText ( getResources().getText(R.string.str_wifi_enabling) ); break; /* WiFi正在打開過程中狀態... */ case WifiManager.WIFI_STATE_ENABLING: mTextView01.setText ( getResources().getText(R.string.str_wifi_enabling) ); break; /* WiFi正在關閉過程中... */ case WifiManager.WIFI_STATE_DISABLING: mTextView01.setText ( getResources().getText(R.string.str_wifi_disabling) ); break; /* WiFi已經關閉 */ case WifiManager.WIFI_STATE_DISABLED: mTextView01.setText ( getResources().getText(R.string.str_wifi_disabled) ); break; /* 無法取得或識別WiFi狀態 */ case WifiManager.WIFI_STATE_UNKNOWN: default: mTextView01.setText ( getResources().getText(R.string.str_wifi_unknow) ); break; } } catch(Exception e) { mTextView01.setText(e.toString()); e.getStackTrace(); } super.onResume(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:andro package="irdc.wifi" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name="irdc.wifi.wifi" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <!-- 聲明WIFI以及網絡等相關權限 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> </manifest>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro android:background="@drawable/white" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android: android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@drawable/blue" android:text="@string/hello" /> <CheckBox android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_checked" android:textColor="@drawable/blue" /> </LinearLayout>
最後更新:2017-04-02 16:48:19