音乐信息获取
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.media.MediaMetadata;
import java.util.List; // 确保导入List
// 获取MediaSessionManager实例
MediaSessionManager mediaSessionManager = (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE);
// 获取所有活跃的MediaController
List mediaControllers = mediaSessionManager.getActiveSessions(null); // 避免使用泛型
// 初始化输出结果
StringBuilder output = new StringBuilder();
// 遍历所有MediaController,找到正在播放音乐的控制器
for (Object controller : mediaControllers) {
if (controller instanceof MediaController) {
MediaController mediaController = (MediaController) controller;
PlaybackState playbackState = mediaController.getPlaybackState();
MediaMetadata mediaMetadata = mediaController.getMetadata();
// 检查是否正在播放音乐
if (playbackState != null && mediaMetadata != null) {
// 获取音乐包名
String packageName = mediaController.getPackageName();
// 获取专辑名
String albumName = mediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM);
// 获取歌曲名
String songName = mediaMetadata.getString(MediaMetadata.METADATA_KEY_TITLE);
// 获取歌手名
String artistName = mediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST);
// 获取音乐总时长
long totalDuration = mediaMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);
// 获取当前播放进度
long currentPosition = playbackState.getPosition();
// 获取播放状态
String playbackStatus;
int state = playbackState.getState();
if (state == PlaybackState.STATE_PLAYING) {
playbackStatus = "正在播放";
} else if (state == PlaybackState.STATE_PAUSED) {
playbackStatus = "已暂停";
} else if (state == PlaybackState.STATE_STOPPED) {
playbackStatus = "已停止";
} else {
playbackStatus = "未知状态";
}
// 构建当前应用的输出结果
output.append("音乐包名: ").append(packageName).append("\n");
output.append("专辑名: ").append(albumName != null ? albumName : "未知").append("\n");
output.append("歌曲名: ").append(songName != null ? songName : "未知").append("\n");
output.append("歌手名: ").append(artistName != null ? artistName : "未知").append("\n");
output.append("总时长: ").append(totalDuration).append(" 毫秒\n");
output.append("播放进度: ").append(currentPosition).append(" 毫秒\n");
output.append("播放状态: ").append(playbackStatus).append("\n\n");
}
}
}
// 如果没有找到正在播放的音乐,返回默认提示
if (output.length() == 0) {
output.append("没有找到正在播放的音乐。");
}
// 返回最终结果
return output.toString();