700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android-Service(系统服务实例:定位 网络判断 电话服务 通知栏通知等)

Android-Service(系统服务实例:定位 网络判断 电话服务 通知栏通知等)

时间:2023-05-31 00:55:26

相关推荐

Android-Service(系统服务实例:定位 网络判断 电话服务  通知栏通知等)

1.回顾

上篇 学习了 Android 系统服务的基本知识,和两个实例

2.重点

(1)实例:定位实现

(2)实例:网络判断

(3)实例:wifi 判断

(4)实例:获得电话号码

(5)实例:通过服务实现加载 布局文件

(6)实例:通知栏 通知实现

(7)实例:闹钟信息获得

(8)实例:电源信息获得

3. 实例 :定位实现 (LOCATION_SERVICE)

3.1 效果图

3.2 思路和 注意事项

通过getSystemService()方法 得到 LoactionManager 对象 实现;

注意:

(1)使用模拟器测试的时候,怎么到得不到值,应该是模拟器开启没有或没有安装定位服务 ;

(2)使用真机测试 :我的为MI4 , 在使用的时候 可以通过 网络定位 得到 经纬度 等信息 ;

(3)真机上测试 就没办法 弄 gif 了 ,还是老老实实 截图了;

3.3 实现

(1)添加权限

三个里面 ,我也不知道是那个 索性都添加上,貌似是 第一个 权限就行了;

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

(2)实现

/*** LocationManager 地理位置*/private String strs = "";private void LocationManagerM() {LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);// 供应商信息List<String> pros = locationManager.getAllProviders();for (String string : pros) {strs ="点位方式:"+ string + "\n";}//第一个参数是:点位方式 gps ,network locationManager.requestLocationUpdates(pros.get(0),6000,1000,new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onLocationChanged(Location location) {// 位置改变,更新位置if (location != null) {// 精度strs += location.getAccuracy() + "\n"// 海拔高度+ location.getAltitude() + "\n"// 轴承+ location.getBearing() + "\n"// 纬度+ location.getLatitude() + "\n"// 经度+ location.getLongitude() + "\n"// 速度?+ location.getSpeed() + "\n"// 时间 毫秒+location.getTime();} else {strs += "location为空";}tv_show.setText(strs);}});tv_show.setText(strs+"请稍后。。");}

4. 实例 :网络判断 (CONNECTIVITY_SERVICE)

4.1 效果图

4.2 思路 和 注意 事项

通过getSystemService(CONNECTIVITY_SERVICE); 返回ConnectivityManager 对象实现 判断

注意:这里判断的是 是否有网络环境,不管是 wifi 还是 GPRS ;

4.3 实现

(1)权限设置

第一个权限就可以了;第二个 是 网络权限 ;

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/>

(2)逻辑实现

/*** 网络连接的服务 Connectivity* * */private void ConnectivityM() {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);NetworkInfo info = connectivityManager.getActiveNetworkInfo();String str = "都没有";if (info != null) {str="网络连接成功 ";if (info.getState().equals(State.CONNECTED)) {str += "CONNECTED";} else if (info.getState().equals(State.CONNECTING)) {str += "CONNECTING";} else if (info.getState().equals(State.DISCONNECTED)) {str += "DISCONNECTED";} else if (info.getState().equals(State.DISCONNECTING)) {str += "DISCONNECTING";}}else{str="没有网络";}Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();}

5. 实例:wifi 环境判断(WIFI_SERVICE)

5.1 效果图

5.2 思路 和 注意事项

通过getSystemService(WIFI_SERVICE);实现 wifiManager 对象 ;

5.3 实现

(1)权限设置

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

(2)逻辑实现

/*** WIFI_SERVICE* wifi 服务*/private void WifiManagerM(){WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);WifiInfo wifiInfo= wifiManager.getConnectionInfo();String str="wifi网络连接失败";if(wifiManager.isWifiEnabled()){str="wifi网络连接成功! ";str+="IP地址:"+wifiInfo.getIpAddress();}tv_show.setText(str);}

6. 实例 :电话服务-获得电话号码(TELEPHONY_SERVICE)

6.1 效果图

6.2 思路及注意事项

通过getSystemService(TELEPHONY_SERVICE); 实现 TelephoneManager对象

6.3 实现

(1)添加权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

(2)逻辑实现

/*** TeleponyManager* 电话服务*/private void TelephonyManagerM(){TelephonyManager manager=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);String str=manager.getLine1Number();tv_show.setText(str);}

7.实例:布局服务-给当前布局添加一个view (LAYOUT_INFLATER_SERVICE)

7.1 效果图

7.2 思路及注意事项

通过getSystemService(LAYOUT_INFLATER_SERVICE); 实现LayoutInflater 对象;

注意:

(1)这个服务目前我不知道 有什么作用,只知道 可以加载布局为 view对象 使用;

(2)通过当前 Context对象也可以得到LayoutInflater 对象 ,从而 将 布局文件转为view对象;

(3)通过 View对象的infalter() 方法也可以 将 布局文件 转为view对象 ;

(4)还有MenuInflater inflater=getMenuInflater(); 也可以加载布局 ,这个加载的是菜单文件;

7.3 实现

/*** 布局服务 LayoutInflater LAYOUT_INFLATER_SERVICE*/private void LayoutInflaterM() {LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);View child = layoutInflater.inflate(R.layout.windowmanager, null);mainRelativelayout.addView(child);ImageView imageView = (ImageView) child.findViewById(R.id.imageView1);imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "LAYOUT_INFLATER_SERVICE",Toast.LENGTH_SHORT).show();}});}

8.实例:通知栏实现通知(NOTIFICATION_SERVICE)

(1)这里就不去实现了;具体的实例 看我前面的文章 :

Android-Notification (通知实现)

/lablenet/article/details/47999961

(2) 注意:

文章中少写了 权限设置:请加上下面两个权限:

<uses-permission android:name="android.permission.VIBRATE"/><uses-permission android:name="android.permission.FLASHLIGHT"/>

9. 实例:闹钟服务-获得信息 (ALARM_SERVICE)

/*** AlarmManager* * 可以设置闹钟 和 得到闹钟信息*/private void AlarmManagerM() {AlarmManager alarmManager = (AlarmManager) MainActivity.this.getSystemService(ALARM_SERVICE);AlarmClockInfo alarmClockInfo = alarmManager.getNextAlarmClock();// 得到触发时间Long long1 = alarmClockInfo.getTriggerTime();Toast.makeText(getApplicationContext(), "触发时间:" + long1,Toast.LENGTH_LONG).show();}

10. 实例:电源服务-获得信息(POWER_SERVICE)

/*** POWER_SERVICE 电源服务*/private void powerManagerM() {PowerManager powerManager = (PowerManager) MainActivity.this.getSystemService(POWER_SERVICE);// 判断是否是省电模式powerManager.isPowerSaveMode();// 其他还有 屏幕控制,锁屏等}

11.DEMO 下载

CSDN 上传失败,没法分享了;下篇 文章开头分享 !

又是好晚了,最近效率越来越低 ;无意中看的图片,符合我现在的状态 ,分享一下!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。