Android实现桌面歌词(类似TTPlayer)
时间: 2023-11-18 17:04:51 浏览: 193
实现桌面歌词需要在 Android 系统中创建一个悬浮窗口,然后将歌词显示在悬浮窗口中。下面是一些实现方法:
1. 使用 WindowManager 创建悬浮窗口:
```java
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.lyrics_layout, null);
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.addView(view, params);
```
2. 在悬浮窗口中显示歌词:
```java
TextView lyricsView = view.findViewById(R.id.lyrics_view);
lyricsView.setText(lyrics);
```
3. 使用 MediaPlayer 监听音乐播放进度,并更新歌词:
```java
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int duration = mediaPlayer.getDuration();
lyricsTimer = new Timer();
lyricsTimer.schedule(new TimerTask() {
@Override
public void run() {
int position = mediaPlayer.getCurrentPosition();
String lyrics = getLyrics(position);
handler.post(new Runnable() {
@Override
public void run() {
lyricsView.setText(lyrics);
}
});
}
}, 0, 500);
}
});
```
4. 解析歌词文件,并根据播放进度获取当前歌词:
```java
private String getLyrics(int position) {
for (int i = lyricsList.size() - 1; i >= 0; i--) {
if (position >= lyricsList.get(i).getTime()) {
return lyricsList.get(i).getLyrics();
}
}
return "";
}
```
其中,`lyricsList` 是一个包含歌词时间和歌词内容的列表。
阅读全文