1、 新建ITouchShService.aidl
(frameworks\base\core\java\android\os)
2、 新建TouchShService.java
(frameworks\base\services\core\java\com\android\server)
public class TouchShService extends ITouchShService.Stub |
3、 新建TouchShManager.java
(frameworks\base\core\java\android\os)
/** * get singleton *@hide */ public static TouchShManager getInstance() { if (mInstance == null) { mInstance = new TouchShManager(); } return mInstance; }
public TouchShManager() { IBinder b = ServiceManager.getService(Context.TOUCHSH_SERVICE); if (b != null) { mService = ITouchShService.Stub.asInterface(b); Log.d(TAG, "TouchShManager: init mService"); } } |
4、 在Context.java中给新建的service写别名,方便引用
/* BEGIN: Added by test, 2016/8/26 */ /** *sharpnow touch service *@hide */ public static final String TOUCHSH_SERVICE = "touchsh"; |
5、 SystemServiceRegistry.java中在static中注册service
/* BEGIN: Added by test, 2016/8/26 add TouchSHservice */ registerService(Context.TOUCHSH_SERVICE, TouchShManager.class, new CachedServiceFetcher<TouchShManager>() { @Override public TouchShManager createService(ContextImpl ctx) { Log.d(TAG,"register TouchShManager success !"); return TouchShManager.getInstance(); }}); |
6、 在SystemServer.java中的 startOtherServices() 函数中将新建的servie添加到servicemanager中
/* BEGIN: Added by test, 2016/8/26 add touchShService to service manager*/ try { Slog.i(TAG, "touchShService"); touchShService = new touchShService(mSystemContext); ServiceManager.addService(Context.TOUCHSH_SERVICE, touchShService); } catch (RuntimeException e) { Slog.e(TAG, "Starting touchShService exception ", e); } |
7、 编译烧录验证
编译报错:
a) checkpublicapi-current-timestamp,make update-api
b) 给新增的类和函数添加@hide防止java doc生成时报错