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)添加权限

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

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


     (2)实现

  1. /** 
  2.      * LocationManager 地理位置 
  3.      */  
  4.     private String strs = "";  
  5.       
  6.     private void LocationManagerM() {  
  7.   
  8.         LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);  
  9.         // 供应商信息  
  10.         List<String> pros = locationManager.getAllProviders();  
  11.           
  12.         for (String string : pros) {  
  13.             strs ="点位方式:"+ string + "\n";  
  14.         }  
  15.           
  16.           
  17.            //第一个参数是:点位方式 gps ,network   
  18.             locationManager.requestLocationUpdates(pros.get(0),6000,1000,new LocationListener() {  
  19.                   
  20.                 @Override  
  21.                 public void onStatusChanged(String provider, int status, Bundle extras) {  
  22.                     // TODO Auto-generated method stub  
  23.                       
  24.                 }  
  25.                   
  26.                 @Override  
  27.                 public void onProviderEnabled(String provider) {  
  28.                     // TODO Auto-generated method stub  
  29.                       
  30.                 }  
  31.                   
  32.                 @Override  
  33.                 public void onProviderDisabled(String provider) {  
  34.                     // TODO Auto-generated method stub  
  35.                       
  36.                 }  
  37.                   
  38.                 @Override  
  39.                 public void onLocationChanged(Location location) {  
  40.                     // 位置改变,更新位置  
  41.                     if (location != null) {  
  42.                         // 精度  
  43.                         strs += location.getAccuracy() + "\n"  
  44.                         // 海拔高度  
  45.                                 + location.getAltitude() + "\n"  
  46.                                 // 轴承  
  47.                                 + location.getBearing() + "\n"  
  48.                                 // 纬度  
  49.                                 + location.getLatitude() + "\n"  
  50.                                 // 经度  
  51.                                 + location.getLongitude() + "\n"  
  52.                                 // 速度?  
  53.                                 + location.getSpeed() + "\n"  
  54.                                 // 时间 毫秒  
  55.                                 +location.getTime();  
  56.                     } else {  
  57.                         strs += "location为空";  
  58.                     }  
  59.                     tv_show.setText(strs);  
  60.                 }  
  61.             });  
  62.               
  63.         tv_show.setText(strs+"请稍后。。");  
  64.           
  65.     }  

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

   4.1 效果图

                                                           

      4.2 思路 和 注意 事项

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

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

    

     4.3 实现

         (1)权限设置

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

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

         (2)逻辑实现

  1. /**  
  2.      * 网络连接的服务 Connectivity  
  3.      *   
  4.      *   
  5.      */  
  6.   
  7.     private void ConnectivityM() {  
  8.         ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  
  9.   
  10.         NetworkInfo info = connectivityManager.getActiveNetworkInfo();  
  11.         String str = "都没有";  
  12.         if (info != null) {  
  13.             str="网络连接成功  ";  
  14.             if (info.getState().equals(State.CONNECTED)) {  
  15.                 str += "CONNECTED";  
  16.             } else if (info.getState().equals(State.CONNECTING)) {  
  17.                 str += "CONNECTING";  
  18.             } else if (info.getState().equals(State.DISCONNECTED)) {  
  19.                 str += "DISCONNECTED";  
  20.             } else if (info.getState().equals(State.DISCONNECTING)) {  
  21.                 str += "DISCONNECTING";  
  22.             }  
  23.         }else{  
  24.             str="没有网络";  
  25.         }  
  26.   
  27.         Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();  
  28.     }  

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

  5.1 效果图

                                                       


     5.2 思路 和 注意事项

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

     5.3 实现

        (1)权限设置

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

        (2)逻辑实现
  1. /** 
  2.      * WIFI_SERVICE 
  3.      * wifi 服务 
  4.      */  
  5.   
  6.     private void WifiManagerM(){  
  7.           
  8.      WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);  
  9.       WifiInfo wifiInfo= wifiManager.getConnectionInfo();  
  10.         
  11.       String str="wifi网络连接失败";  
  12.       if(wifiManager.isWifiEnabled()){  
  13.           str="wifi网络连接成功! ";  
  14.           str+="IP地址:"+wifiInfo.getIpAddress();  
  15.       }  
  16.        
  17.       tv_show.setText(str);  
  18.     }  

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

   6.1 效果图

                                                           

    6.2 思路及注意事项

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

    6.3 实现

      (1)添加权限

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

      (2)逻辑实现

  1. /** 
  2.  * TeleponyManager 
  3.  * 电话服务 
  4.  */  
  5.   
  6. private void TelephonyManagerM(){  
  7.     TelephonyManager manager=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
  8.     String str=manager.getLine1Number();  
  9.     tv_show.setText(str);  
  10. }  

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 实现

  1. /** 
  2.      * 布局服务 LayoutInflater LAYOUT_INFLATER_SERVICE 
  3.      */  
  4.   
  5.     private void LayoutInflaterM() {  
  6.         LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);  
  7.         View child = layoutInflater.inflate(R.layout.windowmanager, null);  
  8.         mainRelativelayout.addView(child);  
  9.         ImageView imageView = (ImageView) child.findViewById(R.id.imageView1);  
  10.         imageView.setOnClickListener(new OnClickListener() {  
  11.   
  12.             @Override  
  13.             public void onClick(View v) {  
  14.                 Toast.makeText(MainActivity.this"LAYOUT_INFLATER_SERVICE",  
  15.                         Toast.LENGTH_SHORT).show();  
  16.   
  17.             }  
  18.         });  
  19.     }  

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

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

      Android-Notification (通知实现)

      http://blog.csdn.net/lablenet/article/details/47999961


     (2)  注意:

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


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


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

  1. /** 
  2.      * AlarmManager 
  3.      *  
  4.      * 可以设置闹钟 和 得到闹钟信息 
  5.      */  
  6.     private void AlarmManagerM() {  
  7.   
  8.         AlarmManager alarmManager = (AlarmManager) MainActivity.this  
  9.                 .getSystemService(ALARM_SERVICE);  
  10.         AlarmClockInfo alarmClockInfo = alarmManager.getNextAlarmClock();  
  11.         // 得到触发时间  
  12.         Long long1 = alarmClockInfo.getTriggerTime();  
  13.         Toast.makeText(getApplicationContext(), "触发时间:" + long1,  
  14.                 Toast.LENGTH_LONG).show();  
  15.     }  

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

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

11.DEMO 下载

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值