在前面的【安卓开发第一步】中我们了解到了对【软件自动检测更新】做出了详细的解释和实现,下面我们将继续进行我们android开发的第二步:“对android应用开发所需的环境要求检测实现”:①我们来了解并实现对手机中网络环境(wifi、CDMA.......)监测,并做设置; ②我们对GPS是否开启做检测,并实现对GPS是否开启做进一步设置; ③实现对手机端的唯一标识符MEID的获取。
(一)对手机是否有网络接入做检测,并做相关设置
在我们的移动应用开发过程中经常要使用到的是网络数据的加载,那么我们在做网络数据加载的过程中是不是需要去判断用户是否存在网络接入并给予相应的提示呢? 答案当然是:YES;那么下面我们就来对网络是否有接入做代码的实现:
/*-------------------------------- 存在WIFI和手机数据任意可用网络返回true,否则返回false-----------------------*/
public boolean hasActivityNetwork() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo() != null;
}
在上面的hasActivityNetwork()方法中我们实现了对是否存在WIFI和移动数据接入做了检测,如果存在则返回TRUE,反之则返回False;
当然当我们获取到的数据情况为True的时候我们不需要任何的处理但是当我们获取到的为False的时候我们是无法去获取网络数据的,所以我们需要提醒用户去做网络设置的;下面我们将对这一步操作做代码实现:
if (!hasActivityNetwork()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("没有可用的网络")
.setIcon(R.drawable.ic_launcher)
.setMessage("是否对网络进行设置?")
.setPositiveButton("是",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
Intent intent = null;
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
}
})
.setNegativeButton("否",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
finish();
}
}).show();
}
这样我们就能够在给用户提示的情况下去实现对网络数据的获取;
(二)对GPS的检测和开启实现
在我们的应用中需要用到位置信息的时候,我们就需要去关注用户的GPS是否有开启,以方便去进行精确的定位,下面我们就来实现对用户手机端是否对GPS开启的检测做代码的实现:
/*---------------------------------GPS管理器-------------------------------------*/
LocationManager locationManager = (LocationManager) getApplicationContext()
.getSystemService(Context.LOCATION_SERVICE);
boolean GPSflag=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
在上面的返回值GPSflag就是我们采用GPS管理器获取到的用户手机是否开启GPS的布尔值,当我们的终端没有做GPS开启的时候我们需要提醒“用户开启GPS设置以完成精确定位”,下面将以代码形式实现
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Content.isFirstLodingGPSflag = false;
Activity activity = HurryMainActivity.this;
while (activity.getParent() != null) {
activity = activity.getParent();
}
try {
dialog = new AlertDialog.Builder(activity)
.setIcon(R.drawable.ic_launcher)
.setTitle("GPS开启")
.setMessage("为了您的精准定位,需要您开启GPS设备?")
.setPositiveButton("是",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
getApplicationContext()
.startActivity(intent);
} catch (ActivityNotFoundException ex) {
intent.setAction(Settings.ACTION_SETTINGS);
try {
getApplicationContext()
.startActivity(intent);
} catch (Exception e) {
}
}
}
})
.setNegativeButton("否",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
}).show();
} catch (Exception e) {
}
}
这样我们就实现了对移动终端的GPS的检测以及开启的代码实现........
(三)对手机唯一标识符MEID的获取实现
在我们的移动应用中如果没有做用户名的设计思路的时候,其实我们也是可以采用手机设备自身的唯一标识符去分辨用户的,从而根据这些信息去给不同用户不一样的消息,下面将做代码实现:
// 获取用户的MEID
public void getMEID() {
TelephonyManager tm = (TelephonyManager) this
.getSystemService(TELEPHONY_SERVICE);
Content.setMEID(tm.getDeviceId());
}
其中的tm.getDeviceId()方法获取到的就是我们需要的终端唯一标识符MEID;
在上面的三个小点中基本完成了对网络接入,GPS设定,以及MEID的获取的实现,不过在做这些操作之前需要在xml中加入相应的权限问题,具体我没有做区分,加入下列即可:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
这次的记录就到这里,还请大牛多多指教,下一篇将讲述的是我们在对开启GPS后的定位实现,主要讲【百度定位】和【GPS模块定位】的实现,欢迎访问个人博客(http://cuiyongzhi.com)!