android 服务状态,监控状态  |  Android 开源项目  |  Android Open Source Project

每当有新数据时,典型仪表板就会更新驾驶、呼叫和/或媒体信息。Android 提供了以下 API,使 OEM 的仪表板能够轻松接收最新状态。

驾驶状态

在导航过程中,系统会发送行车路线事件。文件 packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java 包含适用于仪表板中导航应用渲染程序的抽象方法。

在扩展的 InstrumentClusterRenderingService 中,这些方法如下:

public class MyClusterRenderingService extends

InstrumentClusterRenderingService {

...

@Override protected NavigationRenderer getNavigationRenderer() {

return new NavigationRenderer() {

@Override CarNavigationInstrumentCluster getNavigationProperties() {...}

@Override void onStartNavigation() {...}

@Override void onStopNavigation() {...}

@Override void onNextTurnChanged(int event, String road, int turnAngle,

int turnNumber, Bitmap image, int turnSide) {...}

@Override void onNextTurnDistanceChanged(int distanceMeters, int

timeSeconds) {...}

};

}

}

您可以向这些方法添加自定义操作(如呈现),以显示所需信息。

呼叫状态

如需监控呼叫状态,请按以下步骤操作:

扩展 android.telecom.InCallService。

public class ClusterInCallService extends InCallService {

...

在 AndroidManifest.xml 中注册该服务。

android:permission="android.permission.BIND_INCALL_SERVICE"

android:exported="false">

替换 onCallAdded 和 onCallRemoved。

public void onCallAdded(Call call) {

...

call.registerCallback(mPhoneCallback);

mPhoneCallback.onStateChanged(call, call.getState());

}

public void onCallRemoved(Call call) {

...

call.unregisterCallback(mPhoneCallback);

}

注册回调以接收呼叫状态更改事件 (Call#registerCallback)。

private static class PhoneCallback extends Callback {

...

public void onStateChanged(Call call, int state) {...}

}

使用内容提供程序提取联系信息:

ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream)。

如需了解呼叫状态监控示例代码,请参阅:

packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

如需了解内容提供程序示例代码,请参阅:

packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java。

媒体状态

您可以将系统配置为在收到与 MediaMetadata(如专辑或歌曲名称或封面图片)的变更或与播放状态(缓冲、暂停、播放和停止)的变更相关的事件时更新媒体状态。如需更新媒体状态,请执行以下操作:

使用 MediaSessionManager 并获取主控制器 (#getActiveSessions(null)[0])。

注册回调 (MediaController#Callback)。

订阅活跃会话更改

MediaSessionManager#addOnActiveSessionsChangedListener(...)。

如需了解详情,请参阅:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值