开发人员控制台

自定义System X-Ray指标(开发者工具)


自定义System X-Ray指标(开发者工具)

您可以通过发送要显示的信息来定制System X-Ray上显示的指标。您可以使用此功能来显示您认为有用的任何内容,例如静态信息、指标何时跨越不同阈值边界或事件何时发生。

创建自定义指标

System X-Ray在收到应用广播的意图时显示“应用”部分,其中包含您定义的指标。下面的代码显示了如何为System X-Ray创建意图:

private void updateMetrics(Context context) {

// 初始化意图
Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

//添加指标
intent.putExtra("Metrics1", "第一个指标");
intent.putExtra("Color1", "green");

intent.putExtra("Metrics2", "第二个指标");
intent.putExtra("Color2", "yellow");

intent.putExtra("Metrics3", "第三个指标");
intent.putExtra("Color3", "red");

// 发送
context.sendBroadcast(intent);
}

此示例使用Context类获取环境所需的资源和类。

使用操作com.amazon.ssm.METRICS_UPDATE初始化意图,并添加应用的程序包名称作为额外信息。程序包名称是必需的,因为System X-Ray只会在您的应用处于前台时显示“应用”部分。如果您将此代码放在活动中,则可以调用getPackageName()帮助程序方法。

指标名称必须是Metrics1Metrics2Metrics3。任何其他名称都将被忽略。您可以将指标的值设置为所需的任何字符串,但请记住,它可能会被截断。System X-Ray采用以下格式显示每个指标:[名称]:[值]

指标的默认颜色为灰色。如果您选择更改颜色,则需要向意图添加额外项。额外项名称必须是Color1Color2Color3。值可以是redyellowgreenblue。指标名称和颜色名称必须具有相同的编号才能应用颜色。例如,Metrics1将获得 Color1。颜色值彼此独立 — 您可以拥有多个具有相同颜色的指标。

现在意图已经设置,您可以调用sendBroadcast(Intent)方法。如果启用了System X-Ray,它将添加一个名为应用的部分,并显示意图中定义的指标。如果要更改指标的值或颜色,则必须使用新值或颜色重新创建意图,然后再次发送。

由于System X-Ray不会缓存指标的状态,因此如果您正在System X-Ray中跟踪多个指标,则必须重新发送所有这些指标的状态,即使它们没有全部改变。否则,您不发送的指标将从System X-Ray中删除。

自定义指标示例

让我们演示几个此功能用法的示例。

静态信息

如果您在多台Amazon Fire TV设备上测试您的应用或使用不同的WiFi网络,可能需要查看正在测试的Fire TV型号,或者Fire TV使用的WiFi网络SSID。当您的应用启动时,您可以获取此信息并将其发送到System X-Ray。以下代码显示了如何显示静态信息的示例:

private void updateMetrics(Context context, String buildModel, String ssid) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    //添加指标
    intent.putExtra("Metrics1", buildModel);
    intent.putExtra("Metrics2", ssid);

    // 发送
    context.sendBroadcast(intent);
}

下图是来自上述输入的示例显示。在此图像中,System X-Ray显示Amazon Fire TV设备型号为AFTS,这是第二代Amazon Fire TV电视盒。它还显示Fire TV已连接到来宾网络。

阈值

您可能需要跟踪可跨越不同阈值的指标。例如,假设您的应用具有视频内容,并且您希望在视频播放过程中跟踪丢弃的帧。您可以将5次以下丢帧视为绿色,将5-9次丢帧视为黄色,将10次及以上丢帧视为红色。

当您更新丢弃的帧数时,可以更改颜色以匹配阈值。以下代码示例演示了如何显示阈值:

private void updateMetrics(Context context, int numFrameDrops, String frameDropStatus) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    //添加指标
    intent.putExtra("Metrics1", "FrameDrops:"+numFrameDrops);
    intent.putExtra("Color1", frameDropStatus);

    // 发送
    context.sendBroadcast(intent);
}

以下是不同阈值的截图:

事件

事件日志记录很有用,但您可能需要一种可视化的方式来跟踪事件上次发生的时间。例如,测试可能显示在3小时的视频播放后引发间歇性异常。以下是如何配置事件的示例:

private void updateMetrics(Context context, String message, String time) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    //添加指标
    intent.putExtra("Metrics1", message);
    intent.putExtra("Color1", "Red");

    intent.putExtra("Metrics2", "Time:"+time);
    intent.putExtra("Color2", "Red");

    // 发送
    context.sendBroadcast(intent);
}

在下面的屏幕截图中,System X-Ray显示异常以及异常发生的时间。

另请参阅

更多详细信息,请参阅以下内容: