开发者控制台

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

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

您可以通过发送要显示的信息来定制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只会在您的应用处于前台时显示“App(应用)”部分。如果在活动中加入此代码,则可以调用getPackageName()帮助程序方法。

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

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

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

由于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显示异常以及异常发生的时间。

另请参阅

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