自定义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()
帮助程序方法。
指标名称必须是Metrics1
、Metrics2
或Metrics3
。任何其他名称都将被忽略。可以将指标的值设置为所需的任何字符串,但请记住,它可能会被截断。System X-Ray采用以下格式显示每个指标:[名称]:[值]
。
指标的默认颜色为灰色。如果选择更改颜色,则需要在意图中添加额外项。额外项名称必须是Color1
、Color2
或Color3
。值可以是red
、yellow
、green
或blue
。指标名称和颜色名称必须具有相同的编号才能应用颜色。例如,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显示异常以及异常发生的时间。
另请参阅
更多详细信息,请参阅以下内容: