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"/>
- /**
- * 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() {
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- }
- @Override
- public 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() {
- @Override
- public void onClick(View v) {
- Toast.makeText(MainActivity.this, "LAYOUT_INFLATER_SERVICE",
- Toast.LENGTH_SHORT).show();
- }
- });
- }
8.实例:通知栏实现通知 (NOTIFICATION_SERVICE)
(1)这里就不去实现了;具体的实例 看我前面的文章 :
Android-Notification (通知实现)
http://blog.csdn.net/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 下载
又是好晚了,最近效率越来越低 ;无意中看的图片,符合我现在的状态 ,分享一下