九、Android学习第八天——广播机制以及WIFI网络操作(转)

(转自: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调试打开,然后运行而的先后,就会自行在大哥大及运行是序啦~

相关文章