• Android学习(十五) 系统服务


    一、常用系统服务

      后台Service在系统启动时被SystemService开启

      1、MountService:监听是否有SD卡安装和移除。

      2、ClipboardService:提供剪切板功能。

      3、PackageManagerService:提供软件包的安装移除和查看。

      4、电量、网络连接状态等等。

    二、调用系统Service:

      getSystemService()方法:Activity的一个方法,用来获取系统服务对象,传入一个字符串,返回一个系统服务对象。

    三、常用的系统服务:

    传入的Name 返回的对象 说明
    WINDOW_SERVICE WindowManager 管理打开的窗口程序
    LAYOUT_INFLATER_SERVICE Layoutlnflater 取得XML里定义的View
    ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
    POWER_SERVICE PowerManager 电源服务
    ALARM_SERVICE AlarmManager 闹钟服务
    NOTIFICATION_SERVICE NotificationManager 状态栏服务
    KEYGUARD_SERVICE KeyguardManager 键盘锁服务

    示例:获取网络连接状态和开启关闭WIFI

    main.xml

    <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">
    
        <Button
            android:onClick="doClick"
            android:id="@+id/btn_network"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="网络是否连接" />
        
        <Button
            android:onClick="doClick"
            android:id="@+id/btn_wifi"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="WIFI开关" />
    </LinearLayout>

    AndroidManifest.xml 系统权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.systemservicedemo"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.systemservicedemo.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    main.java:后台代码

    package com.example.systemservicedemo;
    
    import android.app.Activity;
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        
        
        public void doClick(View v){
            switch(v.getId()){
                case R.id.btn_network:
                    if(isNetWorkConnected(MainActivity.this)){
                        Toast.makeText(MainActivity.this, "网络连接正常", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show();
                    }
                    break;
                case R.id.btn_wifi:
                    WifiManager();
                    break;
            }
        }
        
        /**
         * 检测网络是否连接
         * @param context
         * @return
         */
        private boolean isNetWorkConnected(Context context){
            if(context != null){
                ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
                NetworkInfo info = manager.getActiveNetworkInfo();
                if(info != null){
                    return info.isAvailable();
                }
            }
            return false;
        }
        
        
        private void WifiManager(){
            WifiManager wifi = (android.net.wifi.WifiManager) MainActivity.this.getSystemService(WIFI_SERVICE);
            if(wifi.isWifiEnabled()){
                wifi.setWifiEnabled(false);
                Toast.makeText(MainActivity.this, "WIFI已经关闭", Toast.LENGTH_SHORT).show();
            }else{
                wifi.setWifiEnabled(true);
                Toast.makeText(MainActivity.this, "WIFI已经打开", Toast.LENGTH_SHORT).show();
            }
        }
    }

    系统服务的种类非常多,其他需要使用时再去研究,主要是通过getSystemService方法来获取不同的系统服务对象。

  • 相关阅读:
    委托和异步方法
    线程池_ThreadPool
    委托_deleget
    一步一步实现视频播放器client(二)
    mysql忘记password
    POJ 2456 Aggressive cows (二分 基础)
    Fragment小结
    Cocos2d-x粒子系统
    淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树
    C与C++在形參的一点小差别
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4398013.html
Copyright © 2020-2023  润新知