现在有一种现象就是很多人玩手机是“走到哪,玩到哪”,那么我们为什么喜欢玩手机,如果没有网络,还会这样么?
如果手机不能联网,那手机对我们的吸引力恐怕就会大大下降了,手机联网才有吸引力,作为开发者的我们怎么能不会网络连接呢,今天我们就来学习一下Android的网络连接。
学习网络连接之前我们先要学习如何获得手机联网的信息,如果我们连手机使用的哪种网络连接都不清楚,如何做开发。
ConnectivityManager,连接管理器,看名字就很清楚了,ConnectivityManager是用来管理手机的网络连接的。通过这个类我们可以获得我们手机联网的相关信息和网络变化等…下面我们来看看ConnectivityManager是如何使用的。
ConnectivityManager基础
学习一个知识最终要的就是思路啦,我们通过步骤理清思路,学习一下ConnectivityManager的使用。
1. 获得ConnectivityManager的对象。我们通过Context.getSystemService(Context.CONNECTIVITY_SERVICE)来获得。
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
2. 通过ConnectivityManager对象调用getActiveNetworkInfo()方法来获得NetworkInfo对象,NetworkInfo对象包含的手机网络的信息。
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
3. 通过NetworkInfo对象的相关方法获得我们想要得到的手机网络的信息。注意:我们在获得调用NetworkInfo 对象的方法是我们首先要判断,NetworkInfo对象非空且网络已连接。
NetworkInfo的方法有很多,我们看几个常用的方法:
- getType():获得网络连接的类型,返回值主要有:TYPE_MOBILE, TYPE_WIFI, TYPE_WIMAX, TYPE_ETHERNET, TYPE_BLUETOOTH,或者其他被ConnectivityManager网络管理器定义的网络连接类型。
- getTypeName ():返回网络连接类型的名字。
- isAvailable ():判断连接是否可用,如果网络可用,返回true;否则返回false。
- isConnected ():判断网络连接是否存在。
ConnectivityManager实例讲解
我们现在通过点击按钮Button来获得我们联网的信息,并将手机网罗连接的类型显示在界面上。
布局文件:
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="网络连接情况" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获得网络连接的情况" />
</LinearLayout>
Activity:
public class MainActivity extends Activity implements View.OnClickListener {
private Button mButtonNetInfo;//定义按钮
private TextView mTextViewInfo;//定义显示信息的文本
//定义网络连接的管理器
private ConnectivityManager mManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonNetInfo = (Button) findViewById(R.id.button);
mTextViewInfo = (TextView) findViewById(R.id.textview);
//获得网络管理器的对象
mManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//点击事件
mButtonNetInfo.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button:
getNetInfo();//调用获得信息的方法
break;
default:
break;
}
}
private void getNetInfo() {
String type = "";
NetworkInfo networkInfo = mManager.getActiveNetworkInfo();//或的网络连接信息的对象
//判断NetworkInfo对象是否非空,以及网络是否连接
if (networkInfo != null && networkInfo.isConnected()) {
//如果网络连接,则弹出“网络连接”弹窗。
Toast.makeText(getApplicationContext(), "网络连接", Toast.LENGTH_SHORT).show();
//获得网络连接的类型
type = networkInfo.getTypeName();
mTextViewInfo.setText("网络连接形式为:" + type);
} else {
//如果无网络连接,则弹出“无网络连接”弹窗。
Toast.makeText(getApplicationContext(), "无网络连接", Toast.LENGTH_SHORT).show();
mTextViewInfo.setText("无网络连接");
}
}
}
让我们来看结果: