这个代码就很简单了,我们既然实现了自己的接口调用,但是我们发现我们自己的Service中其实是没有任何业务逻辑处理的。及时处理也是自己的代码,我们稍微进阶一下,我们获取一下系统的锁屏时间,实现一个最简单的例子,那么我们需要修改两个
第一修改自己的Service代码如下
package android.hytera.wp;
import android.os.RemoteException;
import android.provider.Settings;
import android.content.Context;
/**
* this is my SecondService for system
* test aidl file
*/
public class LookMessageService extends ILookMessage.Stub {
public String value = "I am a value";
private Context mContext;
public LookMessageService(Context mContext){
this.mContext=mContext;
/*
可根据自己的实际情况来决定是否需要传入 Context 参数。
*/
}
@Override
public void setValue(String message) throws RemoteException {
this.value = message;
}
@Override
public String getValue() throws RemoteException {
int time=0;
try {
time=Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SCREEN_OFF_TIMEOUT);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return time+"";
}
}
里面添加了一个Context的对象,并且把以前的getValue的方法修改了一下
@Override
public String getValue() throws RemoteException {
int time=0;
try {
//修改这个部分,不是返回value了,我们把锁屏的时间返回去了,如果是-1就是代表不锁屏
time=Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SCREEN_OFF_TIMEOUT);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return time+"";
}
修改了一个构造方法,传入了一个Context
第二就是修改一下SystemService.java里面的启动,加入了一个Context的对象,代码如下
LookMessageManager.getInstance().setValue("我要变化");//设置value
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
traceBeginAndSlog("start htyera_wp service");
try {
Slog.i(TAG, "add htyera_wp Service");
LookMessageService look = new LookMessageService(context);
ServiceManager.addService(Context.LOOK_MESSAGE_WP, look);
} catch (Throwable e) {
Slog.e(TAG, "Failure starting SerialService", e);
}
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
结束
网友评论