定义自定义系统服务接口(aidl)

添加Manager文件供应用层调用

添加aidl到编译脚本(./framework/base/Android.mk)

实现添加的服务(service.java)

注册到SystemServer(registerService())

一般系统服务的aidl文件都放在framework\base\core\java\android\os目录中。

/home/sunming/androidsource/android-6.0.1_r72/frameworks/base/core/java/android/app中添加aidl,manager文件

=====aidl文件=========package android.app;interface ISystemStatusManager{    String[] getSystemStatus();}=======manager文件提供给app层使用=================
package android.app;import android.content.Context;import android.os.RemoteException;import android.util.Slog;public class SystemStatusManager {    Context mContext;    ISystemStatusManager mService;/**/    public SystemStatusManager(Context context, ISystemStatusManager service) {        mContext = context;        mService = service;    }    public String[] getSystemStatus() {        if (mService != null) {            try {                return mService.getSystemStatus();            } catch (RemoteException e) {                Slog.e("SystemStatus", "RemoteException " + e);                return null;            }        }        return null;    }}
===========在Context中添加常量==================

SYSTEM_STATUS_SERVICE===========SystemServiceRegistry 添加服务=======
//this is add by sunmingregisterService(Context.SYSTEM_STATUS_SERVICE,SystemStatusManager.class,        new CachedServiceFetcher(){            @Override            public SystemStatusManager createService(ContextImpl ctx) {                IBinder b=ServiceManager.getService(Context.SYSTEM_STATUS_SERVICE);                ISystemStatusManager service=ISystemStatusManager.Stub.asInterface(b);                return new SystemStatusManager(ctx.getOuterContext(),service);            }        });===================Android.mk文件中添加aidl文件位置============================
   
LOCAL_SRC_FILES += \
core/java/android/app/ISystemStatusManager.aidl \=================添加service文件========================
package com.android.server;import android.app.ISystemStatusManager;import android.content.Context;import android.os.Build;import android.util.Slog;import java.text.SimpleDateFormat;import java.util.Date;public class SystemStatusManagerService extends ISystemStatusManager.Stub {    private Context mContext;    public SystemStatusManagerService(Context context) {        mContext = context;        Slog.d("SystemStatus", "Date:" + getDateTime() + "\nVersion:" + getVersion());    }    @Override    public String[] getSystemStatus() {        String[] infos = new String[2];        infos[0] = "Date:" + getDateTime();        infos[1] = "Version:" + getVersion();        return infos;    }    private String getDateTime() {        SimpleDateFormat format = new SimpleDateFormat("yyyy-DD-mm HH:mm:s");        Date date = new Date(System.currentTimeMillis());        return format.format(date);    }    private String getVersion() {        return Build.DISPLAY;    }}




更多相关文章

  1. 使用SAX或者DOM或者pull解析XML文件
  2. Android读取文件方法总结
  3. Android使用PULL解析和生成XML文件
  4. H5案例分享:使用JS判断客户端、浏览器、操作系统类型
  5. android中svg文件的使用
  6. android资源文件之:shape详解
  7. Android Debug keystore系统位置

随机推荐

  1. Android(安卓)设备指纹
  2. android手机中图片的拖拉及浏览功能
  3. Android(安卓)设备指纹
  4. Android布局属性详解
  5. 【Android车载系统 News | Tech 5】车载
  6. Android™ 1.5 android.R.drawable Icon
  7. Android(安卓)线程归纳
  8. Android中使用HttpURLConnection和HttpCl
  9. view属性大全
  10. Android布局属性全面剖析