玖、Android学习第5天——广播机制与WIFI互联网操作(转)

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

9、Android学习第六天——广播机制与WIFI网络操作

明日熟稔了Android中的广播机制与WIFI互连网的有的基本操作,计算如下:

  • Android的广播机制 

笔者们通晓广播机制中,发送方不会关注接收方时候接受到多少或许怎么着去处理数量。

那里总括下Android中布罗兹castReceiver的挂号格局:

(一)在应用程序中展开挂号

(二)在Manifest.xml中开始展览注册

假使在Manifest.xml中展开挂号,那么该应用程序无论是开依然关,该使用都会收到广播事件。例如:监听电池功耗量等。同理可得,这种注册方式并不是大家想要的。

假定在应用程序中展开挂号,就会在Activity可知时进行登记,不可知时就会撤消注册。

在Activity中进行登记的代码如下:

注册:registerReceiver(BroadcastReceiver receiver,IntentFilter filter);

撤消注册:unregisterReceiver(布罗兹castReceiver receiver);

只要贰个布罗兹castReceiver用于更新UI,那么普通会使用在代码中登记的不二秘诀。

  • WIFI基本操作 

WIFI应该算得Android中比较主要的1块了,用Android系统手提式有线电话机的童鞋们,应该天天都在触及WIFI。

明日纯熟了怎么对WIFI网卡实行着力的操作,包含打开,关闭,检查测试网卡状态等等。

WIFI网卡的景观是有1多重整型常量来代表的,如下:

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

(二)WIFI_STATE_DISABLING WIFI网卡正在关闭——0

(三)WIFI_STATE_ENABLED WIFI网卡可用状态——三

(四)WIFI_STATE_ENABLING WIFI网卡正在打开——二

(五)WIFI_STATE_UNKNOWN 未知网卡状态——肆

大家只顾到了,每一种景况后小编写了贰个数字,大家清楚那几个都是整型常量,所在此之前边的数字正是这么些常量对应的值,借使大家在程序中,输出当前当卡的情事,就会师到这么些数值,对应着某种网卡的事态。

操作Android WIFI网卡状态中,比较重大的是操作WIFI网卡供给的权能,那几个有过多。

我们在Android API中得以找到Manifest.permission类,就能够看看各样权力了。

那里贴出WIFI的1个事例,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的话代表的是它自个儿,所以要用WI帕萨特estActivity.this
// 得到WIFIManager对象
wifiManager = (WifiManager) WIFITestActivity.this
.getSystemService(Context.WIFI_SERVICE);
// setWifiEnabled(true) 打开wifi网卡
wifiManager.setWifiEnabled(true);

// 获得当前网卡的景观,那儿输出的是多个整型常量
System.out.println(“当前网卡的景况为:” + wifiManager.getWifiState());

// 弹出2个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调节和测试打开,然后运营你的主次,就会自动在手提式有线电话机上运营那些程序啦~

相关文章