ing*_*abh 6 android android-mediasession
根据Uamp样本onPlayFromMediaId调用时,它mediaId与queueitems已经存储的列表匹配iterator如下
public static int getMusicIndexOnQueue(Iterable<MediaSessionCompat.QueueItem> queue,
String mediaId) {
int index = 0;
for (MediaSessionCompat.QueueItem item : queue) {
if (mediaId.equals(item.getDescription().getMediaId())) {
return index;
}
index++;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
除非你的列表中有一千个项目,它的滞后程度很严重,否则这种方法很有效,在这种情况下,我有什么方法可以获得队列中的索引吗?
PS-此代码来自v1分支,尽管基于v2 kotlin的分支具有相同的概念.
没有可用的 API 可以直接为您提供此信息。因此,您必须构建自己的数据结构。
我创建了一个以 MediaId 作为键、以 Index 作为其值的 HashMap。这将帮助您更快地获取 QueueItem。那么问题就变成了,什么时候创建这个HashMap。当您从设备获取媒体列表(QueueItem)时,我在回调中创建了它。这个想法是在后台创建这张地图。
HashMap<String, Integer> mediaIndexMap = new HashMap<String, Integer>();
int index = 0;
for (MediaSessionCompat.QueueItem item : queue) {
mediaIndexMap.put(item.getDescription().getMediaId(), index++);
}
Run Code Online (Sandbox Code Playgroud)
希望这个预处理 QueueItem 应该适用于恒定时间查找/获取。
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |