前言

添加一个Service并让应用调用,类似于获取AudioManager一样。

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

通过getSystemService()获取XCarManager。

正文

这里只是简单展示,然后通过XCarManager进行修改和获取。

XCarManager xCarManager = (XCarManager) getSystemService(Context.BIU_CAR_SERVICE);
if(null!=xCarManager){
    //改变状态
    xCarManager.setCarStatus("driving");
    //设置状态
    String carStatus = xCarManager.getCarStatus();
}

添加上下文常量

这个在Context.java中定义

\frameworks\base\core\java\android\content\Context.java

找个位置定义(可以参考AUDIO_SERVICE)

public static final String BIU_CAR_SERVICE = "biu_car";

添加到value

@StringDef(suffix = { "_SERVICE" }, value = {
    //略
    BIU_CAR_SERVICE,
}

创建aidl

创建AIDL文件,管理类和服务类等推荐AS中写好,然后复制进去,以免格式和导入包缺省问题。

在\frameworks\base\core\java\android中创建\biumall\car目录(仅供参考,看自己)

\frameworks\base\core\java\android\biumall\car

此时的包名为

android.biumall.car

创建IXCarStatus.aidl

// IXCarStatus.aidl
package android.biumall.car;

/**
 * @hide
 */
interface IXCarStatus {
    String getCarStatus();
    void setCarStatus(String status);
}

创建服务类

创建服务类XCarService.java

这里也放\frameworks\base\core\java\android\biumall\car中,主要是方便,也可以统一包名!

package android.biumall.car;
import android.os.RemoteException;

public class XCarService extends IXCarStatus.Stub {

    private String mStatus = "";

    @Override
    public String getCarStatus() throws RemoteException {
        return mStatus;
    }

    @Override
    public void setCarStatus(String status) throws RemoteException {
        mStatus = status;
    }
}

隐藏内容!
付费阅读后才能查看!
3
5
多个隐藏块只需支付一次

相关文章

1 条评论

  • 改变自己
    改变自己 游客

    学习一下

    广东梅州市
    回复