九、Android學習第八天——廣播機制與WIFI網路操作

來源:互聯網
上載者:User

標籤:android   http   io   os   使用   ar   java   檔案   資料   

(轉自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html)

九、Android學習第八天——廣播機制與WIFI網路操作

今天熟悉了Android中的廣播機制與WIFI網路的一些基本操作,總結如下:

  • Android的廣播機制 

我們知道廣播機制中,發送方不會關心接收方時候接收到資料或者如何去處理資料。

這裡總結下Android中BroadcastReceiver的註冊方法:

(一)在應用程式中進行註冊

(二)在Manifest.xml中進行註冊

如果在Manifest.xml中進行註冊,那麼該應用程式無論是開還是關,該應用都會收到廣播事件。例如:監聽電池耗電量等。顯而易見,這種註冊方法並不是我們想要的。

如果在應用程式中進行註冊,就會在Activity可見時進行註冊,不可見時就會取消註冊。

在Activity中進行註冊的代碼如下:

註冊:registerReceiver(BroadcastReceiver receiver,IntentFilter filter);

取消註冊:unregisterReceiver(BroadcastReceiver receiver);

如果一個BroadcastReceiver用於更新UI,那麼通常會使用在代碼中註冊的方法。

  • WIFI基本操作 

WIFI應該說是Android中比較重要的一塊了,用Android系統手機的童鞋們,應該每天都在接觸WIFI。

今天熟悉了如何對WIFI網卡進行基本的操作,包括開啟,關閉,檢測網卡狀態等等。

WIFI網卡的狀態是有一系列整型常量來表示的,如下:

(一)WIFI_STATE_DISABLED WIFI網卡不可用——1

(二)WIFI_STATE_DISABLING WIFI網卡正在關閉——0

(三)WIFI_STATE_ENABLED WIFI網卡可用狀態——3

(四)WIFI_STATE_ENABLING WIFI網卡正在開啟——2

(五)WIFI_STATE_UNKNOWN 未知網卡狀態——4

大家注意到了,每個狀態後我寫了一個數字,我們知道這些都是整型常量,所以後面的數字就是這些常量對應的值,如果大家在程式中,輸出當前當卡的狀態,就會看到這些數值,對應著某種網卡的狀態。

操作Android WIFI網卡狀態中,比較重要的是操作WIFI網卡需要的許可權,這個有很多。

我們在Android API中可以找到Manifest.permission類,就可以看到各種許可權了。

這裡貼出WIFI的一個例子,WIFI的這個例子只能在真機上面測試,因為模擬器沒有WIFI這樣的功能。

這裡比較重要的有三個檔案:

WIFITestActivity.java

main.xml

Manifest.xml

下面來看看這三個檔案中的具體代碼:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="WIFI" />
<Button
android:id="@+id/open"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="開啟wifi" 
/>
<Button
android:id="@+id/close"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="關閉wifi" 
/>
<Button
android:id="@+id/check"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="檢查wifi狀態" 
/>
</LinearLayout>

WIFITestActivity.java

package mickey.wifi;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class WIFITestActivity extends Activity {

// 三個控制項對象
private Button open = null;
private Button close = null;
private Button check = null;

// 我們知道要對網卡進行操作,就需要WifiManager這個類
private WifiManager wifiManager = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 得到控制項對象的執行個體,並且為他們設定相應的監聽器
open = (Button) findViewById(R.id.open);
open.setOnClickListener(new OpenWifiListener());
close = (Button) findViewById(R.id.close);
close.setOnClickListener(new CloseWifiListener());
check = (Button) findViewById(R.id.check);
check.setOnClickListener(new CheckWifiListener());
}

// 為開啟網卡按鈕設定監聽器
class OpenWifiListener implements OnClickListener {
@Override
public void onClick(View arg0) {
// 內部類如果直接使用this的話代表的是它自己,所以要用WIFITestActivity.this
// 得到WIFIManager對象
wifiManager = (WifiManager) WIFITestActivity.this
.getSystemService(Context.WIFI_SERVICE);
// setWifiEnabled(true) 開啟wifi網卡
wifiManager.setWifiEnabled(true);

// 得到當前網卡的狀態,這兒輸出的是一個整型常量
System.out.println("當前網卡的狀態為:" + wifiManager.getWifiState());

// 彈出一個Toast提示使用者當前wifi網卡的狀態是什麼,記得調用show方法
Toast.makeText(WIFITestActivity.this,
"當前wifi網卡的狀態為" + wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();
}
}

// 為關閉網卡按鈕設定監聽器
class CloseWifiListener implements OnClickListener {
@Override
public void onClick(View arg0) {
// 得到WIFIManager對象
wifiManager = (WifiManager) WIFITestActivity.this
.getSystemService(Context.WIFI_SERVICE);
// 設定網卡不可用
wifiManager.setWifiEnabled(false);
System.out.println("當前網卡的狀態為:" + wifiManager.getWifiState());
Toast.makeText(WIFITestActivity.this,
"當前wifi網卡的狀態為" + wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();
}
}

// 為檢查網卡狀態按鈕設定監聽器
class CheckWifiListener implements OnClickListener {
@Override
public void onClick(View arg0) {
// 得到WIFIManager對象
wifiManager = (WifiManager) WIFITestActivity.this
.getSystemService(Context.WIFI_SERVICE);
System.out.println("當前網卡的狀態為:" + wifiManager.getWifiState());
Toast.makeText(WIFITestActivity.this,
"當前wifi網卡的狀態為" + wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();

}
}
}

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mickey.wifi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".WIFITestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

<!-- 這四個許可權一定要有,否則系統不會賦予使用者操作網路及網卡的許可權 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
</manifest>

然後童鞋們,把基於Android系統的手機用USB資料線串連到電腦,記得把USB調試開啟,然後運行你的程式,就會自動在手機上運行這個程式啦~

九、Android學習第八天——廣播機制與WIFI網路操作(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.