Titanium SDK 中的媒体项(Media.Item)对象详解
概述
在 Titanium SDK 的媒体模块中,Titanium.Media.Item
是一个非常重要的对象,它代表了从设备音乐库中获取的单个媒体项(如歌曲、播客等)。这个对象提供了丰富的元数据访问能力,让开发者能够获取音乐库中各种详细的媒体信息。
获取方式
Item
对象不能直接创建,而是通过以下两种方式获取:
- 使用
Titanium.Media.openMusicLibrary
方法,在其成功回调函数中返回 - 使用
Titanium.Media.queryMusicLibrary
方法,返回一个Item
对象数组
核心属性解析
基础信息属性
- title: 媒体项的标题(如歌曲名称)
- artist: 媒体项的艺术家信息
- albumTitle: 所属专辑的标题
- albumArtist: 专辑的艺术家信息(可能与单曲艺术家不同)
- composer: 作曲者信息
- genre: 媒体项所属的音乐流派
专辑相关信息
- albumTrackNumber: 该曲目在专辑中的编号
- albumTrackCount: 专辑包含的总曲目数
- discNumber: 该曲目所在的碟片编号(针对多碟专辑)
- discCount: 专辑包含的总碟片数
- isCompilation: 是否为合辑专辑的一部分
播放信息
- playCount: 该媒体项被播放的次数
- lastPlayedDate: 最近一次播放的日期
- playbackDuration: 媒体项的持续时间(秒)
- bookmarkTime: 用户上次播放时的位置
- skipCount: 该媒体项被跳过的次数
高级元数据
- artwork: 专辑封面图像(以 Blob 对象形式)
- lyrics: 歌词内容
- rating: 用户评分(0-5)
- beatsPerMinute: 每分钟节拍数(BPM)
- comments: 用户添加的注释信息
- userGrouping: 用户自定义分组信息
持久化标识符
这些属性在 6.1.0 版本后引入,用于唯一标识媒体项及其相关元素:
- persistentID: 媒体项本身的持久标识符
- albumPersistentID: 专辑的持久标识符
- albumArtistPersistentID: 专辑艺术家的持久标识符
- genrePersistentID: 流派的持久标识符
- podcastPersistentID: 播客的持久标识符
特殊属性
- mediaType: 媒体类型,使用
Titanium.Media.MUSIC_MEDIA_TYPE_*
常量表示 - isExplicit: 是否标记为"显式内容"
- hasProtectedAsset: 是否为受保护资产
- isCloudItem: 是否为 iCloud 项目
- assetURL: 媒体项的 URL 地址
使用场景示例
假设我们需要获取用户音乐库中所有歌曲并显示基本信息:
// 查询音乐库
const musicLibrary = Ti.Media.queryMusicLibrary({
// 查询条件
artist: 'Coldplay'
});
// 处理结果
musicLibrary.forEach(function(item) {
console.log('歌曲: ' + item.title);
console.log('艺术家: ' + item.artist);
console.log('专辑: ' + item.albumTitle);
console.log('时长: ' + item.playbackDuration + '秒');
// 如果有专辑封面
if (item.artwork) {
const coverImage = Ti.UI.createImageView({
image: item.artwork,
width: 200,
height: 200
});
// 添加到界面...
}
});
注意事项
Item
对象是只读的,不能修改其中的属性- 不同设备/系统版本可能支持的属性有所不同
- 某些属性(如 artwork)可能为 null
- 需要确保应用有访问音乐库的权限
版本兼容性
- 基础属性从 1.4.0 版本开始提供
- 许多高级属性在 6.1.0 版本中新增
- 某些属性(如 playbackStoreID)有特定的系统版本要求
通过 Titanium.Media.Item
对象,开发者可以构建丰富的音乐相关应用,如音乐播放器、音乐库管理器等,充分利用设备本地音乐库的资源。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考