RyCarPlayer/app/src/main/java/com/zlm/hp/ui/LrcActivity.java
如果当时 9c75d057df 2020-12-17 V7.0.1
*.[改进]暂停播放视频时,左上角的时间依旧在更新。
*.[新增]音频歌曲歌词界面新增左上角时间显示。
*.[新增]打开歌词界面过几秒后,自动进入全屏写真模式显示。
2020-12-17 22:42:06 +08:00

2346 lines
94 KiB
Java

package com.zlm.hp.ui;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.zlm.down.entity.DownloadTask;
import com.zlm.hp.adapter.LrcPopSingerAdapter;
import com.zlm.hp.adapter.PopPlayListAdapter;
import com.zlm.hp.async.AsyncHandlerTask;
import com.zlm.hp.audio.utils.MediaUtil;
import com.zlm.hp.constants.ConfigInfo;
import com.zlm.hp.constants.ResourceConstants;
import com.zlm.hp.db.util.AudioInfoDB;
import com.zlm.hp.db.util.DownloadThreadInfoDB;
import com.zlm.hp.entity.AudioInfo;
import com.zlm.hp.entity.tool.MakeInfo;
import com.zlm.hp.lyrics.LyricsReader;
import com.zlm.hp.lyrics.model.LyricsInfo;
import com.zlm.hp.lyrics.model.LyricsTag;
import com.zlm.hp.lyrics.utils.FileUtils;
import com.zlm.hp.lyrics.utils.LyricsIOUtils;
import com.zlm.hp.lyrics.utils.LyricsUtils;
import com.zlm.hp.lyrics.widget.AbstractLrcView;
import com.zlm.hp.lyrics.widget.ManyLyricsView;
import com.zlm.hp.manager.AudioPlayerManager;
import com.zlm.hp.manager.DownloadAudioManager;
import com.zlm.hp.manager.LyricsManager;
import com.zlm.hp.manager.OnLineAudioManager;
import com.zlm.hp.receiver.AudioBroadcastReceiver;
import com.zlm.hp.util.ColorUtil;
import com.zlm.hp.util.ImageUtil;
import com.zlm.hp.util.ResourceUtil;
import com.zlm.hp.util.ToastUtil;
import com.zlm.hp.widget.ButtonRelativeLayout;
import com.zlm.hp.widget.IconfontImageButtonTextView;
import com.zlm.hp.widget.IconfontTextView;
import com.zlm.hp.widget.ListItemRelativeLayout;
import com.zlm.hp.widget.PlayListBGRelativeLayout;
import com.zlm.hp.widget.TransitionImageView;
import com.zlm.libs.widget.CustomSeekBar;
import com.zlm.libs.widget.MusicSeekBar;
import com.zlm.libs.widget.RotateLayout;
import java.io.File;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
/**
* @Description: 歌词界面
* @author: zhangliangming
* @date: 2018-10-16 19:43
**/
public class LrcActivity extends BaseActivity {
/**
* 旋转布局界面
*/
private RotateLayout mRotateLayout;
private LinearLayout mLrcPlaybarLinearLayout;
/**
* 时间
*/
private TextView mTimeTv;
/**
* 歌曲名称tv
*/
private TextView mSongNameTextView;
/**
* 歌手tv
*/
private TextView mSingerNameTextView;
////////////////////////////底部
private MusicSeekBar mMusicSeekBar;
/**
* 播放
*/
private RelativeLayout mPlayBtn;
/**
* 暂停
*/
private RelativeLayout mPauseBtn;
/**
* 下一首
*/
private RelativeLayout mNextBtn;
/**
* 上一首
*/
private RelativeLayout mPreBtn;
/**
* 播放进度
*/
private TextView mSongProgressTv;
/**
* 歌曲总长度
*/
private TextView mSongDurationTv;
/**
* 多行歌词视图
*/
private ManyLyricsView mManyLineLyricsView;
//播放模式
private ImageView mModeAllImg;
private ImageView mModeRandomImg;
private ImageView mModeSingleImg;
/**
* 歌手写真图片
*/
private TransitionImageView mSingerImageView;
/**
* 更多按钮
*/
private boolean mIsMoreMenuPopShowing = false;
private ViewStub mViewStubMoreMenu;
private RelativeLayout mMoreMenuPopLayout;
private PlayListBGRelativeLayout mMoreMenuPopRL;
/**
* 歌曲详情
*/
private boolean mIsSongInfoPopShowing = false;
private ViewStub mViewStubSongInfo;
private RelativeLayout mSongInfoPopLayout;
private PlayListBGRelativeLayout mSongInfoPopRL;
/**
* 歌手列表
*/
private boolean mIsSingerListPopShowing = false;
private ViewStub mViewStubSingerList;
private RelativeLayout mSingerListPopLayout;
private PlayListBGRelativeLayout mSingerListPopRL;
private RecyclerView mSingerListRecyclerView;
///////////////////////////////歌曲列表弹出窗口布局/////////////////////////////////////////
private boolean mIsShowPopPlayList = false;
/**
* 播放列表全屏界面
*/
private RelativeLayout mPopPlayListRL;
/**
* 播放列表内容界面
*/
private RelativeLayout mPopPlayContentRL;
/**
*
*/
private RecyclerView mPlayListRListView;
private PopPlayListAdapter mAdapter;
/**
* 当前播放列表歌曲总数
*/
private TextView mPopListSizeTv;
//播放模式
private IconfontTextView mModeAllTv;
private IconfontTextView mModeRandomTv;
private IconfontTextView mModeSingleTv;
/**
* 喜欢
*/
private IconfontImageButtonTextView mLikeMenuBtn;
private IconfontImageButtonTextView mUnLikeMenuBtn;
//mv
private IconfontImageButtonTextView mMvMenuBtn;
//下载
private ImageView mDownloadImg;
private ImageView mDownloadedImg;
////////////////////////////////////////////////////////////////////////////
//、、、、、、、、、、、、、、、、、、、、、、、、、翻译和音译歌词、、、、、、、、、、、、、、、、、、、、、、、、、、、
//翻译歌词
private ImageView mHideTranslateImg;
private ImageView mShowTranslateImg;
//音译歌词
private ImageView mHideTransliterationImg;
private ImageView mShowTransliterationImg;
//翻译歌词/音译歌词
private ImageView mShowTTToTranslateImg;
private ImageView mShowTTToTransliterationImg;
private ImageView mHideTTImg;
private final int HASTRANSLATELRC = 0;
private final int HASTRANSLITERATIONLRC = 1;
private final int HASTRANSLATEANDTRANSLITERATIONLRC = 2;
private final int NOEXTRALRC = 3;
private Handler mExtraLrcTypeHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case NOEXTRALRC:
//翻译歌词
mHideTranslateImg.setVisibility(View.INVISIBLE);
mShowTranslateImg.setVisibility(View.INVISIBLE);
//音译歌词
mHideTransliterationImg.setVisibility(View.INVISIBLE);
mShowTransliterationImg.setVisibility(View.INVISIBLE);
//翻译歌词/音译歌词
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
break;
case HASTRANSLATEANDTRANSLITERATIONLRC:
//翻译歌词
mHideTranslateImg.setVisibility(View.INVISIBLE);
mShowTranslateImg.setVisibility(View.INVISIBLE);
//音译歌词
mHideTransliterationImg.setVisibility(View.INVISIBLE);
mShowTransliterationImg.setVisibility(View.INVISIBLE);
//翻译歌词/音译歌词
int lrcShowType = (int) msg.obj;
if (lrcShowType == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC) {
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.VISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
} else if (lrcShowType == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC) {
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.VISIBLE);
} else {
mShowTTToTranslateImg.setVisibility(View.VISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
}
break;
case HASTRANSLITERATIONLRC:
//翻译歌词
mHideTranslateImg.setVisibility(View.INVISIBLE);
mShowTranslateImg.setVisibility(View.INVISIBLE);
//音译歌词
if (msg.obj == null) {
mHideTransliterationImg.setVisibility(View.VISIBLE);
mShowTransliterationImg.setVisibility(View.INVISIBLE);
} else {
mShowTransliterationImg.setVisibility(View.VISIBLE);
mHideTransliterationImg.setVisibility(View.INVISIBLE);
}
//翻译歌词/音译歌词
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
break;
case HASTRANSLATELRC:
//翻译歌词
if (msg.obj == null) {
mHideTranslateImg.setVisibility(View.VISIBLE);
mShowTranslateImg.setVisibility(View.INVISIBLE);
} else {
mShowTranslateImg.setVisibility(View.VISIBLE);
mHideTranslateImg.setVisibility(View.INVISIBLE);
}
//音译歌词
mHideTransliterationImg.setVisibility(View.INVISIBLE);
mShowTransliterationImg.setVisibility(View.INVISIBLE);
//翻译歌词/音译歌词
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
break;
}
}
};
//、、、、、、、、、、、、、、、、、、、、、、、、、翻译和音译歌词、、、、、、、、、、、、、、、、、、、、、、、、、、、
/**
* 音频广播
*/
private AudioBroadcastReceiver mAudioBroadcastReceiver;
//
private ConfigInfo mConfigInfo;
/**
* 加载数据
*/
private final int LOAD_DATA = 0;
/**
* 隐藏歌词操作栏
*/
private final int MESSAGE_WHAT_HIDEBAR = 5;
/**
* 时间变化
*/
private final int MESSAGE_WHAT_TIMECHANGE = 6;
/**
* 歌手写真重新加载
*/
private final int MESSAGE_CODE_SINGER_RELOAD = 1;
@Override
protected int setContentLayoutResID() {
return R.layout.activity_lrc;
}
@Override
protected void preInitStatusBar() {
setStatusBarViewBG(Color.TRANSPARENT);
}
@Override
protected void initViews(Bundle savedInstanceState) {
initData();
initView();
initReceiver();
}
private void initData() {
mConfigInfo = ConfigInfo.obtain();
mUIHandler.sendEmptyMessage(LOAD_DATA);
}
@Override
protected void handleUIMessage(Message msg) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
switch (msg.what) {
case LOAD_DATA:
Intent intent = new Intent();
if (audioInfo != null) {
Bundle bundle = new Bundle();
bundle.putParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY, audioInfo);
intent.putExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY, bundle);
handleAudioBroadcastReceiver(intent, AudioBroadcastReceiver.ACTION_CODE_INIT);
int playStatus = AudioPlayerManager.newInstance(mContext).getPlayStatus();
if (playStatus == AudioPlayerManager.PLAYING) {
handleAudioBroadcastReceiver(intent, AudioBroadcastReceiver.ACTION_CODE_PLAY);
}
} else {
handleAudioBroadcastReceiver(intent, AudioBroadcastReceiver.ACTION_CODE_NULL);
}
break;
case MESSAGE_WHAT_TIMECHANGE:
Calendar mCalendar= Calendar.getInstance();
int minute=mCalendar.get(Calendar.MINUTE);
if(minute<10) {
mTimeTv.setText(mCalendar.get(Calendar.HOUR_OF_DAY) + ":0" + minute);
}
else{
mTimeTv.setText(mCalendar.get(Calendar.HOUR_OF_DAY) + ":" +minute);
}
break;
case MESSAGE_WHAT_HIDEBAR:
LinearLayout mLrcPlaybar = findViewById(R.id.lrc_playbar);
mLrcPlaybar.setVisibility(View.GONE);
//全屏界面
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mManyLineLyricsView.getLayoutParams();
layoutParams.height=200;
//layoutParams.addRule(RelativeLayout.ABOVE,0);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
mManyLineLyricsView.setLayoutParams(layoutParams);
break;
case MESSAGE_CODE_SINGER_RELOAD:
if (audioInfo != null) {
ImageUtil.release();
mSingerImageView.setTag(null);
//加载歌手写真图片
ImageUtil.loadSingerImage(mContext, mSingerImageView,audioInfo.getFilePath(),audioInfo.getSingerName(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler));
}
break;
}
}
@Override
protected void handleWorkerMessage(Message msg) {
switch (msg.what) {
}
}
private int WaitSecond=0;
/**
* 播放线程
*/
private Runnable mPlayRunnable = new Runnable() {
@Override
public void run() {
int playStatus = AudioPlayerManager.newInstance(mContext).getPlayStatus();
if (playStatus==AudioPlayerManager.PLAYING) {
if(WaitSecond>=0)
{WaitSecond++;}
if(WaitSecond>3)
{
WaitSecond=-1;
mUIHandler.sendEmptyMessage(MESSAGE_WHAT_HIDEBAR);
}
}
Calendar mCalendar=Calendar.getInstance();
int second=mCalendar.get(Calendar.SECOND);
if(second<4) {
mUIHandler.sendEmptyMessage(MESSAGE_WHAT_TIMECHANGE);
}
mWorkerHandler.postDelayed(mPlayRunnable, 1000);
}
};
private void initView() {
// 隐藏状态栏
mRotateLayout = findViewById(R.id.rotateLayout);
mRotateLayout.setDragType(RotateLayout.LEFT_TO_RIGHT);
mRotateLayout.setRotateLayoutListener(new RotateLayout.RotateLayoutListener() {
@Override
public void finishActivity() {
finish();
overridePendingTransition(0, 0);
}
});
//
mLrcPlaybarLinearLayout = findViewById(R.id.lrc_playbar);
mRotateLayout.addIgnoreView(mLrcPlaybarLinearLayout);
if (!mConfigInfo.isStatusBarShow()) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
//返回按钮
final ImageView backImg = findViewById(R.id.backImg);
backImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mRotateLayout.closeView();
}
});
mTimeTv= findViewById(R.id.TimeStr);
//
mSongNameTextView = findViewById(R.id.songName);
mSingerNameTextView = findViewById(R.id.singerName);
if (mConfigInfo.isCenterSingerSongName()) {
mSongNameTextView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL);
mSingerNameTextView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL);
}
else {
mSongNameTextView.setGravity(Gravity.NO_GRAVITY);
mSingerNameTextView.setGravity(Gravity.NO_GRAVITY);
}
//歌手写真
mSingerImageView = findViewById(R.id.singerimg);
mSingerImageView.setVisibility(View.INVISIBLE);
//
mManyLineLyricsView = findViewById(R.id.manyLineLyricsView);
//mManyLineLyricsView.layout(mManyLineLyricsView.getLeft(),mManyLineLyricsView.getTop(),mManyLineLyricsView.getRight(),40);
mManyLineLyricsView.setPaintColor(new int[]{ColorUtil.parserColor("#ffffff"), ColorUtil.parserColor("#ffffff")});
mManyLineLyricsView.setSpaceLineHeight(30);
mManyLineLyricsView.setOnLrcClickListener(new ManyLyricsView.OnLrcClickListener() {
@Override
public void onLrcPlayClicked(int progress) {
if (isFinishing()) {
return;
}
//
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null && progress <= audioInfo.getDuration()) {
audioInfo.setPlayProgress(progress);
AudioPlayerManager.newInstance(mContext).seekto(audioInfo);
}
}
});
mSingerNameTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LinearLayout mLrc_Playbar = findViewById(R.id.lrc_playbar);
if (mLrc_Playbar.getVisibility() != View.GONE) {
mLrc_Playbar.setVisibility(View.GONE);
//全屏界面
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mManyLineLyricsView.getLayoutParams();
layoutParams.height=200;
//layoutParams.addRule(RelativeLayout.ABOVE,0);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
mManyLineLyricsView.setLayoutParams(layoutParams);
}
else{//播放按钮可见
mLrc_Playbar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layoutParams.addRule(RelativeLayout.ABOVE,R.id.lrc_playbar);
mManyLineLyricsView.setLayoutParams(layoutParams);
}
}
});
mSongNameTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LinearLayout mLrcPlaybar = findViewById(R.id.lrc_playbar);
if (mLrcPlaybar.getVisibility() != View.GONE) {
mLrcPlaybar.setVisibility(View.GONE);
}
else{mLrcPlaybar.setVisibility(View.VISIBLE);}
}
});
//设置字体大小和歌词颜色
mManyLineLyricsView.setSize(mConfigInfo.getLrcFontSize(), mConfigInfo.getLrcFontSize(), false);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, false);
mManyLineLyricsView.setPaintColor(new int[]{Color.WHITE, Color.WHITE}, false);
//翻译歌词
mHideTranslateImg = findViewById(R.id.hideTranslateImg);
mHideTranslateImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mHideTranslateImg.setVisibility(View.INVISIBLE);
mShowTranslateImg.setVisibility(View.VISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
});
mShowTranslateImg = findViewById(R.id.showTranslateImg);
mShowTranslateImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mHideTranslateImg.setVisibility(View.VISIBLE);
mShowTranslateImg.setVisibility(View.INVISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLATELRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC);
}
});
//音译歌词
mHideTransliterationImg = findViewById(R.id.hideTransliterationImg);
mHideTransliterationImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mHideTransliterationImg.setVisibility(View.INVISIBLE);
mShowTransliterationImg.setVisibility(View.VISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
});
mShowTransliterationImg = findViewById(R.id.showTransliterationImg);
mShowTransliterationImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mHideTransliterationImg.setVisibility(View.VISIBLE);
mShowTransliterationImg.setVisibility(View.INVISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
}
});
//翻译歌词/音译歌词
mShowTTToTranslateImg = findViewById(R.id.showTTToTranslateImg);
mShowTTToTranslateImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.VISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLATELRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC);
}
});
mShowTTToTransliterationImg = findViewById(R.id.showTTToTransliterationImg);
mShowTTToTransliterationImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mShowTTToTranslateImg.setVisibility(View.INVISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.VISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
}
});
mHideTTImg = findViewById(R.id.hideTTImg);
mHideTTImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mShowTTToTranslateImg.setVisibility(View.VISIBLE);
mShowTTToTransliterationImg.setVisibility(View.INVISIBLE);
mHideTTImg.setVisibility(View.INVISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
});
//
mManyLineLyricsView.setExtraLyricsListener(new AbstractLrcView.ExtraLyricsListener() {
@Override
public void extraLrcCallback() {
if (mManyLineLyricsView.getLyricsReader() == null) {
return;
}
changeLrcTypeIcon();
}
});
mSongProgressTv = findViewById(R.id.songProgress);
mSongDurationTv = findViewById(R.id.songDuration);
//进度条
mMusicSeekBar = findViewById(R.id.lrcseekbar);
mMusicSeekBar.setTrackingTouchSleepTime(200);
mMusicSeekBar.setOnMusicListener(new MusicSeekBar.OnMusicListener() {
@Override
public String getTimeText() {
return MediaUtil.formatTime(mMusicSeekBar.getProgress());
}
@Override
public String getLrcText() {
return null;
}
@Override
public void onProgressChanged(MusicSeekBar musicSeekBar) {
int playStatus = AudioPlayerManager.newInstance(mContext).getPlayStatus();
if (playStatus != AudioPlayerManager.PLAYING) {
mSongProgressTv.setText(MediaUtil.formatTime((mMusicSeekBar.getProgress())));
}
}
@Override
public void onTrackingTouchStart(MusicSeekBar musicSeekBar) {
}
@Override
public void onTrackingTouchFinish(MusicSeekBar musicSeekBar) {
int progress = mMusicSeekBar.getProgress();
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null && progress <= audioInfo.getDuration()) {
audioInfo.setPlayProgress(progress);
AudioPlayerManager.newInstance(mContext).seekto(audioInfo);
}
}
});
//
mMusicSeekBar.setBackgroundPaintColor(ColorUtil.parserColor("#eeeeee", 50));
mMusicSeekBar.setSecondProgressColor(Color.argb(100, 255, 255, 255));
mMusicSeekBar.setProgressColor(Color.rgb(255, 64, 129));
mMusicSeekBar.setThumbColor(Color.rgb(255, 64, 129));
mMusicSeekBar.setTimePopupWindowViewColor(Color.argb(200, 255, 64, 129));
//播放
mPlayBtn = findViewById(R.id.playbtn);
mPlayBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).play(mMusicSeekBar.getProgress());
}
});
//暂停
mPauseBtn = findViewById(R.id.pausebtn);
mPauseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).pause();
}
});
//下一首
mNextBtn = findViewById(R.id.nextbtn);
mNextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).next();
}
});
//上一首
mPreBtn = findViewById(R.id.prebtn);
mPreBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).pre();
}
});
/////////播放模式//////////////
//顺序播放
mModeAllImg = mLrcPlaybarLinearLayout.findViewById(R.id.modeAllImg);
mModeRandomImg = mLrcPlaybarLinearLayout.findViewById(R.id.modeRandomImg);
mModeSingleImg = mLrcPlaybarLinearLayout.findViewById(R.id.modeSingleImg);
mModeAllImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(1, mModeAllImg, mModeRandomImg, mModeSingleImg, true);
}
});
mModeRandomImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(3, mModeAllImg, mModeRandomImg, mModeSingleImg, true);
}
});
mModeSingleImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(0, mModeAllImg, mModeRandomImg, mModeSingleImg, true);
}
});
initPlayModeView(mConfigInfo.getPlayModel(), mModeAllImg, mModeRandomImg, mModeSingleImg, false);
//更多菜单
IconfontImageButtonTextView moreMenuIIBTV = findViewById(R.id.more_menu);
moreMenuIIBTV.setConvert(true);
moreMenuIIBTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mViewStubMoreMenu == null) {
initMoreMenuView();
}
/**
* 如果该界面还没初始化,则监听
*/
if (mMoreMenuPopLayout.getHeight() == 0) {
mMoreMenuPopLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mMoreMenuPopLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
showMoreMenuView();
}
});
} else {
showMoreMenuView();
}
}
});
//播放列表
RelativeLayout playlistMenuRL = findViewById(R.id.playlistmenu);
playlistMenuRL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsShowPopPlayList) {
hidePopPlayListView();
} else {
if (mPopPlayListRL == null) {
initPopPlayListViews();
}
showPopPlayListView();
}
}
});
//mv
mMvMenuBtn = findViewById(R.id.mv_menu);
mMvMenuBtn.setConvert(true);
mMvMenuBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
//如果当前歌曲正在播放,则停止播放
if (AudioPlayerManager.newInstance(mContext).getPlayStatus() == AudioPlayerManager.PLAYING) {
AudioPlayerManager.newInstance(mContext).pause();
}
//打开mv搜索界面
Intent intent = new Intent(LrcActivity.this, SearchMVActivity.class);
intent.putExtra(SearchMVActivity.DATA_KEY, audioInfo);
startActivity(intent);
overridePendingTransition(0, 0);
}
}
});
//喜欢
mLikeMenuBtn = findViewById(R.id.liked_menu);
mLikeMenuBtn.setConvert(true);
mLikeMenuBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
if (AudioInfoDB.isLikeAudioExists(mContext, audioInfo.getHash())) {
boolean result = AudioInfoDB.deleteLikeAudio(mContext, audioInfo.getHash(), true);
if (result) {
mUnLikeMenuBtn.setVisibility(View.VISIBLE);
mLikeMenuBtn.setVisibility(View.GONE);
ToastUtil.showTextToast(mContext, getString(R.string.unlike_tip_text));
}
}
}
}
});
//不喜欢
mUnLikeMenuBtn = findViewById(R.id.unlike_menu);
mUnLikeMenuBtn.setConvert(true);
mUnLikeMenuBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
if (!AudioInfoDB.isLikeAudioExists(mContext, audioInfo.getHash())) {
boolean result = AudioInfoDB.addLikeAudio(mContext, audioInfo, true);
if (result) {
mUnLikeMenuBtn.setVisibility(View.GONE);
mLikeMenuBtn.setVisibility(View.VISIBLE);
ToastUtil.showTextToast(mContext, getString(R.string.like_tip_text));
}
}
}
}
});
//未下载
mDownloadImg = findViewById(R.id.download_img);
mDownloadImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
boolean flag = DownloadAudioManager.newInstance(mContext).isDownloadAudioExists(audioInfo.getHash());
if (flag) {
ToastUtil.showTextToast(mContext, mContext.getResources().getString(R.string.undownload_tip_text));
} else {
ToastUtil.showTextToast(mContext, mContext.getResources().getString(R.string.download_tip_text));
DownloadAudioManager.newInstance(mContext).addTask(audioInfo);
}
}
}
});
mDownloadedImg = findViewById(R.id.downloaded_img);
mWorkerHandler.postDelayed(mPlayRunnable, 0);
mUIHandler.sendEmptyMessage(MESSAGE_WHAT_TIMECHANGE);
}
/**
* 刷新下载视图
*/
private void reshDownloadView(AudioInfo audioInfo) {
if (audioInfo != null && (audioInfo.getType() == AudioInfo.TYPE_LOCAL || AudioInfoDB.isDownloadedAudioExists(mContext, audioInfo.getHash()))) {
mDownloadImg.setVisibility(View.INVISIBLE);
mDownloadedImg.setVisibility(View.VISIBLE);
} else {
mDownloadImg.setVisibility(View.VISIBLE);
mDownloadedImg.setVisibility(View.INVISIBLE);
}
}
/**
* 改变歌词类型图标
*/
private void changeLrcTypeIcon() {
int extraLrcType = mManyLineLyricsView.getExtraLrcType();
if (extraLrcType == AbstractLrcView.EXTRALRCTYPE_NOLRC) {
mExtraLrcTypeHandler.sendEmptyMessage(NOEXTRALRC);
} else if (extraLrcType == AbstractLrcView.EXTRALRCTYPE_TRANSLATELRC) {
if (mConfigInfo.getExtraLrcStatus() == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC) {
mExtraLrcTypeHandler.sendEmptyMessage(HASTRANSLATELRC);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLATELRC);
} else {
Message msg = Message.obtain();
msg.what = HASTRANSLATELRC;
msg.obj = "";
mExtraLrcTypeHandler.sendMessage(msg);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
} else if (extraLrcType == AbstractLrcView.EXTRALRCTYPE_TRANSLITERATIONLRC) {
if (mConfigInfo.getExtraLrcStatus() == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC) {
mExtraLrcTypeHandler.sendEmptyMessage(HASTRANSLITERATIONLRC);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
} else {
Message msg = Message.obtain();
msg.what = HASTRANSLITERATIONLRC;
msg.obj = "";
mExtraLrcTypeHandler.sendMessage(msg);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
} else if (extraLrcType == AbstractLrcView.EXTRALRCTYPE_BOTH) {
if (mConfigInfo.getExtraLrcStatus() == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC) {
Message msg = Message.obtain();
msg.what = HASTRANSLATEANDTRANSLITERATIONLRC;
msg.obj = ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC;
mExtraLrcTypeHandler.sendMessage(msg);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLITERATIONLRC);
} else if (mConfigInfo.getExtraLrcStatus() == ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC) {
Message msg = Message.obtain();
msg.what = HASTRANSLATEANDTRANSLITERATIONLRC;
msg.obj = ConfigInfo.EXTRALRCSTATUS_SHOWTRANSLATELRC;
mExtraLrcTypeHandler.sendMessage(msg);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_SHOWTRANSLATELRC);
} else {
Message msg = Message.obtain();
msg.what = HASTRANSLATEANDTRANSLITERATIONLRC;
msg.obj = ConfigInfo.EXTRALRCSTATUS_NOSHOWEXTRALRC;
mExtraLrcTypeHandler.sendMessage(msg);
mManyLineLyricsView.setExtraLrcStatus(AbstractLrcView.EXTRALRCSTATUS_NOSHOWEXTRALRC);
}
}
}
/**
* 初始化歌曲列表弹出窗口视图
*/
private void initPopPlayListViews() {
ViewStub stub = findViewById(R.id.viewstub_main_pop);
stub.inflate();
mPlayListRListView = findViewById(R.id.curplaylist_recyclerView);
//初始化内容视图
mPlayListRListView.setLayoutManager(new LinearLayoutManager(mContext));
//全屏视图
mPopPlayListRL = findViewById(R.id.list_pop);
mPopPlayListRL.setVisibility(View.INVISIBLE);
mPopPlayListRL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hidePopPlayListView();
}
});
//
ListItemRelativeLayout cancelLL = findViewById(R.id.poplistcancel);
cancelLL.setVisibility(View.VISIBLE);
cancelLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hidePopPlayListView();
}
});
//内容布局
mPopPlayContentRL = findViewById(R.id.pop_content);
mPopListSizeTv = findViewById(R.id.list_size);
//播放模式
mModeAllTv = mPopPlayListRL.findViewById(R.id.modeAll);
mModeRandomTv = mPopPlayListRL.findViewById(R.id.modeRandom);
mModeSingleTv = mPopPlayListRL.findViewById(R.id.modeSingle);
mModeAllTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(1, mModeAllImg, mModeRandomImg, mModeSingleImg, false);
initPlayModeView(1, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
mModeRandomTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(3, mModeAllImg, mModeRandomImg, mModeSingleImg, false);
initPlayModeView(3, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
mModeSingleTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(0, mModeAllImg, mModeRandomImg, mModeSingleImg, false);
initPlayModeView(0, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
}
/**
* 显示歌曲列表弹出窗口
*/
private void showPopPlayListView() {
//设置当前播放模式
initPlayModeView(mConfigInfo.getPlayModel(), mModeAllTv, mModeRandomTv, mModeSingleTv, false);
//设置当前歌曲数据
List<AudioInfo> audioInfoList = mConfigInfo.getAudioInfos();
mPopListSizeTv.setText(audioInfoList.size() + "");
mAdapter = new PopPlayListAdapter(mContext, audioInfoList, mUIHandler, mWorkerHandler);
mPlayListRListView.setAdapter(mAdapter);
//定位
int position = AudioPlayerManager.newInstance(mContext).getCurSongIndex(mConfigInfo.getAudioInfos(), mConfigInfo.getPlayHash());
if (position != -1) {
((LinearLayoutManager) mPlayListRListView.getLayoutManager()).scrollToPositionWithOffset(position, 0);
}
/**
* 如果该界面还没初始化,则监听
*/
if (mPopPlayContentRL.getHeight() == 0) {
mPopPlayContentRL.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mPopPlayContentRL.getViewTreeObserver().removeOnGlobalLayoutListener(this);
showPopPlayListViewAnimation();
}
});
} else {
showPopPlayListViewAnimation();
}
}
/**
* 显示动画
*/
private void showPopPlayListViewAnimation() {
mPopPlayListRL.setVisibility(View.VISIBLE);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, mPopPlayContentRL.getHeight(), 0);
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mIsShowPopPlayList = true;
}
@Override
public void onAnimationEnd(Animation animation) {
mPopPlayListRL.setBackgroundColor(ColorUtil.parserColor(Color.BLACK, 120));
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mPopPlayContentRL.clearAnimation();
mPopPlayContentRL.startAnimation(translateAnimation);
}
/**
* 隐藏歌曲列表弹出窗口
*/
private void hidePopPlayListView() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, mPopPlayContentRL.getHeight());
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mIsShowPopPlayList = false;
mPopPlayListRL.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mPopPlayContentRL.clearAnimation();
mPopPlayContentRL.startAnimation(translateAnimation);
}
/**
* 显示更多菜单按钮
*/
private void showMoreMenuView() {
if (mIsMoreMenuPopShowing) return;
mMoreMenuPopLayout.setVisibility(View.VISIBLE);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, mMoreMenuPopRL.getHeight(), 0);
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mIsMoreMenuPopShowing = true;
mRotateLayout.setDragType(RotateLayout.NONE);
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mMoreMenuPopRL.clearAnimation();
mMoreMenuPopRL.startAnimation(translateAnimation);
}
/**
* 初始化更多菜单
*/
private void initMoreMenuView() {
mViewStubMoreMenu = findViewById(R.id.vs_more_menu);
mViewStubMoreMenu.inflate();
//制作歌词
ImageView makeLrcImg = findViewById(R.id.makelrc);
makeLrcImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
hideMoreMenuView();
//如果当前歌曲正在播放,则停止播放
if (AudioPlayerManager.newInstance(mContext).getPlayStatus() == AudioPlayerManager.PLAYING) {
AudioPlayerManager.newInstance(mContext).pause();
}
//获取制作歌词所需的音频信息
MakeInfo makeInfo = new MakeInfo();
AudioInfo temp = new AudioInfo();
temp.setHash(audioInfo.getHash());
if (temp.getType() == AudioInfo.TYPE_LOCAL) {
temp.setFilePath(audioInfo.getFilePath());
} else {
String taskTempPath = ResourceUtil.getFilePath(mContext, ResourceConstants.PATH_CACHE_AUDIO, audioInfo.getHash() + ".temp");
temp.setFilePath(taskTempPath);
}
makeInfo.setAudioInfo(temp);
//默认歌词路径
String fileName = audioInfo.getTitle();
File lrcFile = LyricsUtils.getLrcFile(fileName, ResourceUtil.getFilePath(mContext, ResourceConstants.PATH_LYRICS, null));
if (lrcFile != null && lrcFile.exists()) {
makeInfo.setLrcFilePath(lrcFile.getPath());
//保存歌词路径
String saveLrcFilePath = lrcFile.getParent() + File.separator + FileUtils.removeExt(lrcFile.getName()) + ".hrc";
makeInfo.setSaveLrcFilePath(saveLrcFilePath);
}
//打开制作歌词设置页面
Intent intent = new Intent(LrcActivity.this, MakeLrcSettingActivity.class);
intent.putExtra(MakeInfo.DATA_KEY, makeInfo);
startActivity(intent);
overridePendingTransition(0, 0);
} else {
ToastUtil.showTextToast(mContext, getString(R.string.select_song_text));
}
}
});
//搜索歌词
ImageView lrcImgV = findViewById(R.id.search_lrc);
lrcImgV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
hideMoreMenuView();
//
if (AudioPlayerManager.newInstance(mContext).getPlayStatus() == AudioPlayerManager.PLAYING) {
Intent intent = new Intent(LrcActivity.this, SearchLrcActivity.class);
intent.putExtra(SearchLrcActivity.AUDIO_DATA_KEY, audioInfo);
startActivity(intent);
//
overridePendingTransition(R.anim.in_from_bottom, 0);
} else {
ToastUtil.showTextToast(mContext, getString(R.string.play_song_text));
}
} else {
ToastUtil.showTextToast(mContext, getString(R.string.select_song_text));
}
}
});
//歌手
ImageView singerImgV = findViewById(R.id.search_singer_pic);
singerImgV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
hideMoreMenuView();
String singerName = audioInfo.getSingerName();
//判断是否有多个歌手
if (singerName.contains("")) {
String regex = "\\s*、\\s*";
final String[] singerNameArray = singerName.split(regex);
if (mViewStubSingerList == null) {
initSingerListView();
}
/**
* 如果该界面还没初始化,则监听
*/
if (mSingerListPopRL.getHeight() == 0) {
mSingerListPopRL.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mSingerListPopRL.getViewTreeObserver().removeOnGlobalLayoutListener(this);
showSingerListView(singerNameArray, audioInfo.getHash());
}
});
} else {
showSingerListView(singerNameArray, audioInfo.getHash());
}
} else {
showSearchSingerView(singerName, audioInfo.getHash());
}
} else {
ToastUtil.showTextToast(mContext, getString(R.string.select_singer_text));
}
}
});
//歌曲详情
ImageView songinfoImgV = findViewById(R.id.songinfo);
songinfoImgV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null) {
hideMoreMenuView();
if (mViewStubSongInfo == null) {
initSongInfoView();
}
/**
* 如果该界面还没初始化,则监听
*/
if (mSongInfoPopRL.getHeight() == 0) {
mSongInfoPopRL.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mSongInfoPopRL.getViewTreeObserver().removeOnGlobalLayoutListener(this);
showSongInfoView(audioInfo);
}
});
} else {
showSongInfoView(audioInfo);
}
} else {
ToastUtil.showTextToast(mContext, getString(R.string.select_song_text));
}
}
});
//更多菜单
mMoreMenuPopLayout = findViewById(R.id.moreMenuPopLayout);
mMoreMenuPopLayout.setVisibility(View.INVISIBLE);
mMoreMenuPopLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideMoreMenuView();
}
});
mMoreMenuPopRL = findViewById(R.id.menuLayout);
//字体
final CustomSeekBar fontSizeSB = findViewById(R.id.fontSizeSeekbar);
fontSizeSB.setMax(ConfigInfo.MAX_LRC_FONT_SIZE - ConfigInfo.MIN_LRC_FONT_SIZE);
fontSizeSB.setProgress((mConfigInfo.getLrcFontSize() - ConfigInfo.MIN_LRC_FONT_SIZE));
fontSizeSB.setBackgroundPaintColor(ColorUtil.parserColor(Color.WHITE, 50));
fontSizeSB.setProgressColor(Color.WHITE);
fontSizeSB.setThumbColor(Color.WHITE);
fontSizeSB.setOnChangeListener(new CustomSeekBar.OnChangeListener() {
@Override
public void onProgressChanged(CustomSeekBar customSeekBar) {
int fontSize = fontSizeSB.getProgress() + ConfigInfo.MIN_LRC_FONT_SIZE;
mManyLineLyricsView.setSize(fontSize, fontSize, true);
mConfigInfo.setLrcFontSize(fontSize).save();
}
@Override
public void onTrackingTouchStart(CustomSeekBar customSeekBar) {
}
@Override
public void onTrackingTouchFinish(CustomSeekBar customSeekBar) {
}
});
//字体减少
IconfontImageButtonTextView lyricDecreaseIIBTV = findViewById(R.id.lyric_decrease);
lyricDecreaseIIBTV.setConvert(true);
lyricDecreaseIIBTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int curProgress = fontSizeSB.getProgress();
curProgress -= 2;
if (curProgress < 0) {
curProgress = 0;
}
fontSizeSB.setProgress(curProgress);
int fontSize = fontSizeSB.getProgress() + ConfigInfo.MIN_LRC_FONT_SIZE;
mManyLineLyricsView.setSize(fontSize, fontSize, true);
mConfigInfo.setLrcFontSize(fontSize).save();
}
});
//字体增加
IconfontImageButtonTextView lyricIncreaseIIBTV = findViewById(R.id.lyric_increase);
lyricIncreaseIIBTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int curProgress = fontSizeSB.getProgress();
curProgress += 2;
if (curProgress > fontSizeSB.getMax()) {
curProgress = fontSizeSB.getMax();
}
fontSizeSB.setProgress(curProgress);
int fontSize = fontSizeSB.getProgress() + ConfigInfo.MIN_LRC_FONT_SIZE;
mManyLineLyricsView.setSize(fontSize, fontSize, true);
mConfigInfo.setLrcFontSize(fontSize).save();
}
});
//歌词颜色面板
ImageView[] colorPanel = new ImageView[ConfigInfo.LRC_COLORS_STRING.length];
final ImageView[] colorStatus = new ImageView[colorPanel.length];
int i = 0;
//
colorPanel[i] = findViewById(R.id.color_panel1);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 0) {
mConfigInfo.setLrcColorIndex(0).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[0].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status1);
//
i++;
colorPanel[i] = findViewById(R.id.color_panel2);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 1) {
mConfigInfo.setLrcColorIndex(1).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[1].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status2);
//
i++;
colorPanel[i] = findViewById(R.id.color_panel3);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 2) {
mConfigInfo.setLrcColorIndex(2).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[2].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status3);
//
i++;
colorPanel[i] = findViewById(R.id.color_panel4);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 3) {
mConfigInfo.setLrcColorIndex(3).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[3].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status4);
//
i++;
colorPanel[i] = findViewById(R.id.color_panel5);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 4) {
mConfigInfo.setLrcColorIndex(4).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[4].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status5);
//
i++;
colorPanel[i] = findViewById(R.id.color_panel6);
colorPanel[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = mConfigInfo.getLrcColorIndex();
if (index != 5) {
mConfigInfo.setLrcColorIndex(5).save();
colorStatus[index].setVisibility(View.GONE);
colorStatus[5].setVisibility(View.VISIBLE);
int lrcColor = ColorUtil.parserColor(ConfigInfo.LRC_COLORS_STRING[mConfigInfo.getLrcColorIndex()]);
mManyLineLyricsView.setPaintHLColor(new int[]{lrcColor, lrcColor}, true);
}
}
});
colorStatus[i] = findViewById(R.id.color_status6);
//
colorStatus[mConfigInfo.getLrcColorIndex()].setVisibility(View.VISIBLE);
//取消
LinearLayout moreMenuCancel = findViewById(R.id.more_menu_calcel);
moreMenuCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hideMoreMenuView();
}
});
//歌词进度减少按钮
ButtonRelativeLayout lrcProgressJianBtn = findViewById(R.id.lyric_progress_jian);
lrcProgressJianBtn.setDefFillColor(ColorUtil.parserColor(Color.WHITE, 20));
lrcProgressJianBtn.setPressedFillColor(ColorUtil.parserColor(Color.WHITE, 50));
lrcProgressJianBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mManyLineLyricsView.getLyricsReader() != null) {
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
if (mManyLineLyricsView.getLrcPlayerStatus() == AbstractLrcView.LRCPLAYERSTATUS_PLAY) {
mManyLineLyricsView.getLyricsReader().setOffset(mManyLineLyricsView.getLyricsReader().getOffset() + (-500));
ToastUtil.showTextToast(mContext, (float) mManyLineLyricsView.getLyricsReader().getOffset() / 1000 + getString(R.string.second));
//保存歌词文件
saveLrcFile(mManyLineLyricsView.getLyricsReader().getLrcFilePath(), mManyLineLyricsView.getLyricsReader().getLyricsInfo(), mManyLineLyricsView.getLyricsReader().getPlayOffset());
} else {
ToastUtil.showTextToast(mContext, getString(R.string.seek_lrc_warntip));
}
}
}
}
});
//歌词进度重置
ButtonRelativeLayout resetProgressJianBtn = findViewById(R.id.lyric_progress_reset);
resetProgressJianBtn.setDefFillColor(ColorUtil.parserColor(Color.WHITE, 20));
resetProgressJianBtn.setPressedFillColor(ColorUtil.parserColor(Color.WHITE, 50));
resetProgressJianBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mManyLineLyricsView.getLyricsReader() != null) {
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
if (mManyLineLyricsView.getLrcPlayerStatus() == AbstractLrcView.LRCPLAYERSTATUS_PLAY) {
mManyLineLyricsView.getLyricsReader().setOffset(0);
ToastUtil.showTextToast(mContext, getString(R.string.reset));
//保存歌词文件
saveLrcFile(mManyLineLyricsView.getLyricsReader().getLrcFilePath(), mManyLineLyricsView.getLyricsReader().getLyricsInfo(), mManyLineLyricsView.getLyricsReader().getPlayOffset());
} else {
ToastUtil.showTextToast(mContext, getString(R.string.seek_lrc_warntip));
}
}
}
}
});
//歌词进度增加
ButtonRelativeLayout lrcProgressJiaBtn = findViewById(R.id.lyric_progress_jia);
lrcProgressJiaBtn.setDefFillColor(ColorUtil.parserColor(Color.WHITE, 20));
lrcProgressJiaBtn.setPressedFillColor(ColorUtil.parserColor(Color.WHITE, 50));
lrcProgressJiaBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mManyLineLyricsView.getLyricsReader() != null) {
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
if (mManyLineLyricsView.getLrcPlayerStatus() == AbstractLrcView.LRCPLAYERSTATUS_PLAY) {
mManyLineLyricsView.getLyricsReader().setOffset(mManyLineLyricsView.getLyricsReader().getOffset() + (500));
ToastUtil.showTextToast(mContext, (float) mManyLineLyricsView.getLyricsReader().getOffset() / 1000 + getString(R.string.second));
//保存歌词文件
saveLrcFile(mManyLineLyricsView.getLyricsReader().getLrcFilePath(), mManyLineLyricsView.getLyricsReader().getLyricsInfo(), mManyLineLyricsView.getLyricsReader().getPlayOffset());
} else {
ToastUtil.showTextToast(mContext, getString(R.string.seek_lrc_warntip));
}
}
}
}
});
}
/**
* 显示歌手列表
*
* @param singerNameArray
*/
private void showSingerListView(String[] singerNameArray, final String hash) {
if (mIsSingerListPopShowing) return;
LrcPopSingerAdapter adapter = new LrcPopSingerAdapter(mContext, singerNameArray, mUIHandler, mWorkerHandler, new PopSingerListener() {
@Override
public void search(String singerName) {
hideSingerListView();
showSearchSingerView(singerName, hash);
}
});
mSingerListRecyclerView.setAdapter(adapter);
mSingerListPopLayout.setVisibility(View.VISIBLE);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, mSingerListPopRL.getHeight(), 0);
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mIsSingerListPopShowing = true;
mRotateLayout.setDragType(RotateLayout.NONE);
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mSingerListPopRL.clearAnimation();
mSingerListPopRL.startAnimation(translateAnimation);
}
/**
* 打开歌手搜索界面
*
* @param singerName
*/
private void showSearchSingerView(String singerName, String hash) {
Intent intent = new Intent(LrcActivity.this, SearchSingerActivity.class);
intent.putExtra("hash", hash);
intent.putExtra("singerName", singerName);
startActivity(intent);
//
overridePendingTransition(0, 0);
}
/**
* 初始化歌手列表
*/
private void initSingerListView() {
mViewStubSingerList = findViewById(R.id.vs_singer_list);
mViewStubSingerList.inflate();
//歌曲详情
mSingerListPopLayout = findViewById(R.id.singerListPopLayout);
mSingerListPopLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideSingerListView();
}
});
mSingerListRecyclerView = findViewById(R.id.singerlist_recyclerView);
mSingerListRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
mSingerListPopRL = findViewById(R.id.pop_singerlist_parent);
//
LinearLayout cancelLL = findViewById(R.id.splcalcel);
cancelLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideSingerListView();
}
});
}
/**
* 隐藏歌手列表
*/
private void hideSingerListView() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, mSingerListPopRL.getHeight());
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mIsSingerListPopShowing = false;
mSingerListPopLayout.setVisibility(View.INVISIBLE);
mRotateLayout.setDragType(RotateLayout.LEFT_TO_RIGHT);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mSingerListPopRL.clearAnimation();
mSingerListPopRL.startAnimation(translateAnimation);
}
/**
* 初始化歌曲详情窗口
*/
private void initSongInfoView() {
mViewStubSongInfo = findViewById(R.id.vs_songinfo);
mViewStubSongInfo.inflate();
//歌曲详情
mSongInfoPopLayout = findViewById(R.id.songinfoPopLayout);
mSongInfoPopLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideSongInfoView();
}
});
mSongInfoPopRL = findViewById(R.id.pop_songinfo_parent);
//
LinearLayout cancelLL = findViewById(R.id.songcalcel);
cancelLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideSongInfoView();
}
});
}
/**
* 隐藏歌曲详情窗口
*/
private void hideSongInfoView() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, mSongInfoPopRL.getHeight());
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mIsSongInfoPopShowing = false;
mSongInfoPopLayout.setVisibility(View.INVISIBLE);
mRotateLayout.setDragType(RotateLayout.LEFT_TO_RIGHT);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mSongInfoPopRL.clearAnimation();
mSongInfoPopRL.startAnimation(translateAnimation);
}
/**
* 显示歌曲详情窗口
*
* @param audioInfo
*/
private void showSongInfoView(AudioInfo audioInfo) {
if (mIsSongInfoPopShowing) return;
TextView popSingerNameTv = findViewById(R.id.pop_singerName);
popSingerNameTv.setText(audioInfo.getSingerName());
TextView popFileExtTv = findViewById(R.id.pop_fileext);
popFileExtTv.setText(audioInfo.getFileExt());
TextView popTimeTv = findViewById(R.id.pop_time);
popTimeTv.setText(audioInfo.getDurationText());
TextView popFileSizeTv = findViewById(R.id.pop_filesize);
popFileSizeTv.setText(audioInfo.getFileSizeText());
TextView popPathTv = findViewById(R.id.pop_path);
popPathTv.setText(audioInfo.getFilePath());
mSongInfoPopLayout.setVisibility(View.VISIBLE);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, mSongInfoPopRL.getHeight(), 0);
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mIsSongInfoPopShowing = true;
mRotateLayout.setDragType(RotateLayout.NONE);
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mSongInfoPopRL.clearAnimation();
mSongInfoPopRL.startAnimation(translateAnimation);
}
/**
* @param lrcFilePath
* @param lyricsInfo
* @param playOffset
*/
private void saveLrcFile(final String lrcFilePath, final LyricsInfo lyricsInfo, final long playOffset) {
new Thread() {
@Override
public void run() {
Map<String, Object> tags = lyricsInfo.getLyricsTags();
tags.put(LyricsTag.TAG_OFFSET, playOffset);
lyricsInfo.setLyricsTags(tags);
//保存修改的歌词文件
try {
LyricsIOUtils.getLyricsFileWriter(lrcFilePath).writer(lyricsInfo, lrcFilePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
/**
* 隐藏更多菜单
*/
private void hideMoreMenuView() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, mMoreMenuPopRL.getHeight());
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mIsMoreMenuPopShowing = false;
mMoreMenuPopLayout.setVisibility(View.INVISIBLE);
mRotateLayout.setDragType(RotateLayout.LEFT_TO_RIGHT);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mMoreMenuPopRL.clearAnimation();
mMoreMenuPopRL.startAnimation(translateAnimation);
}
private void initReceiver() {
//音频广播
mAudioBroadcastReceiver = new AudioBroadcastReceiver();
mAudioBroadcastReceiver.setReceiverListener(new AudioBroadcastReceiver.AudioReceiverListener() {
@Override
public void onReceive(Context context, final Intent intent, final int code) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
handleAudioBroadcastReceiver(intent, code);
}
});
}
});
mAudioBroadcastReceiver.registerReceiver(mContext);
}
/**
* @param intent
* @param code
*/
private void handleAudioBroadcastReceiver(Intent intent, int code) {
switch (code) {
case AudioBroadcastReceiver.ACTION_CODE_NULL:
//空数据
mSongNameTextView.setText(R.string.def_songName);
mSingerNameTextView.setText(R.string.def_artist);
mPauseBtn.setVisibility(View.INVISIBLE);
mPlayBtn.setVisibility(View.VISIBLE);
mSongProgressTv.setText("00:00");
mSongDurationTv.setText("00:00");
//
mMusicSeekBar.setEnabled(false);
mMusicSeekBar.setProgress(0);
mMusicSeekBar.setSecondaryProgress(0);
mMusicSeekBar.setMax(0);
//
mManyLineLyricsView.initLrcData();
//歌手写真
mSingerImageView.setVisibility(View.INVISIBLE);
mSingerImageView.resetData();
//喜欢/不喜欢
mUnLikeMenuBtn.setVisibility(View.VISIBLE);
mLikeMenuBtn.setVisibility(View.GONE);
reshDownloadView(null);
if (mAdapter != null)
mAdapter.reshViewHolder(null);
break;
case AudioBroadcastReceiver.ACTION_CODE_INIT:
Bundle initBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo initAudioInfo = initBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (initAudioInfo != null) {
mSongNameTextView.setText(initAudioInfo.getSongName());
mSingerNameTextView.setText(initAudioInfo.getSingerName());
mPauseBtn.setVisibility(View.INVISIBLE);
mPlayBtn.setVisibility(View.VISIBLE);
if(initAudioInfo.IsOnlyMV()){
//加载歌手写真图片
//ImageUtil.loadSingerImage(mContext, mSingerImageView,initAudioInfo.getFilePath(), initAudioInfo.getSingerName(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler));
return;}
//下载
reshDownloadView(initAudioInfo);
//喜欢/不喜欢
if (AudioInfoDB.isLikeAudioExists(mContext, initAudioInfo.getHash())) {
mUnLikeMenuBtn.setVisibility(View.GONE);
mLikeMenuBtn.setVisibility(View.VISIBLE);
} else {
mUnLikeMenuBtn.setVisibility(View.VISIBLE);
mLikeMenuBtn.setVisibility(View.GONE);
}
//
mSongProgressTv.setText(MediaUtil.formatTime((int) initAudioInfo.getPlayProgress()));
mSongDurationTv.setText(MediaUtil.formatTime((int) initAudioInfo.getDuration()));
//设置进度条
mMusicSeekBar.setEnabled(true);
mMusicSeekBar.setMax((int) initAudioInfo.getDuration());
mMusicSeekBar.setProgress((int) initAudioInfo.getPlayProgress());
mMusicSeekBar.setSecondaryProgress(0);
LyricsReader oldLyricsReader = mManyLineLyricsView.getLyricsReader();
if (oldLyricsReader == null || !oldLyricsReader.getHash().equals(initAudioInfo.getHash())) {
//加载歌词
String keyWords = initAudioInfo.getTitle();
LyricsManager.newInstance(mContext).loadLyrics(initAudioInfo.getFilePath(),keyWords, keyWords, initAudioInfo.getDuration() + "", initAudioInfo.getHash(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler), null);
//加载中
mManyLineLyricsView.initLrcData();
mManyLineLyricsView.setLrcStatus(AbstractLrcView.LRCSTATUS_LOADING);
}
//加载歌手写真图片
ImageUtil.loadSingerImage(mContext, mSingerImageView,initAudioInfo.getFilePath(), initAudioInfo.getSingerName(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler));
if (mAdapter != null) {
mAdapter.reshViewHolder(initAudioInfo.getHash());
if (mIsShowPopPlayList) {
//定位
int position = AudioPlayerManager.newInstance(mContext).getCurSongIndex(mConfigInfo.getAudioInfos(), mConfigInfo.getPlayHash());
if (position != -1) {
((LinearLayoutManager) mPlayListRListView.getLayoutManager()).scrollToPositionWithOffset(position, 0);
}
}
}
} else {
if (mAdapter != null)
mAdapter.reshViewHolder(null);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_PLAY:
if (mPauseBtn.getVisibility() != View.VISIBLE)
mPauseBtn.setVisibility(View.VISIBLE);
if (mPlayBtn.getVisibility() != View.INVISIBLE)
mPlayBtn.setVisibility(View.INVISIBLE);
Bundle playBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo playAudioInfo = playBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (playAudioInfo != null) {
if(playAudioInfo.IsOnlyMV()){return;}
//更新歌词
if (mManyLineLyricsView.getLyricsReader() != null && mManyLineLyricsView.getLyricsReader().getHash().equals(playAudioInfo.getHash()) && mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC && mManyLineLyricsView.getLrcPlayerStatus() != AbstractLrcView.LRCPLAYERSTATUS_PLAY) {
mManyLineLyricsView.play((int) playAudioInfo.getPlayProgress());
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_PLAYING:
Bundle playingBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo playingAudioInfo = playingBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (playingAudioInfo != null) {
if(playingAudioInfo.IsOnlyMV()){return;}
mMusicSeekBar.setProgress((int) playingAudioInfo.getPlayProgress());
//
mSongProgressTv.setText(MediaUtil.formatTime((int) playingAudioInfo.getPlayProgress()));
if (mManyLineLyricsView.getLyricsReader() != null && mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC && mManyLineLyricsView.getLrcPlayerStatus() != AbstractLrcView.LRCPLAYERSTATUS_PLAY && mManyLineLyricsView.getLyricsReader().getHash().equals(playingAudioInfo.getHash())) {
mManyLineLyricsView.play((int) playingAudioInfo.getPlayProgress());
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_STOP:
//暂停完成
if (mPauseBtn.getVisibility() != View.INVISIBLE)
mPauseBtn.setVisibility(View.INVISIBLE);
if (mPlayBtn.getVisibility() != View.VISIBLE)
mPlayBtn.setVisibility(View.VISIBLE);
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.pause();
}
break;
case AudioBroadcastReceiver.ACTION_CODE_SEEKTO:
Bundle seektoBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo seektoAudioInfo = seektoBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (seektoAudioInfo != null) {
if(seektoAudioInfo.IsOnlyMV()){return;}
mSongProgressTv.setText(MediaUtil.formatTime((int) seektoAudioInfo.getPlayProgress()));
mMusicSeekBar.setProgress(seektoAudioInfo.getPlayProgress());
if (mManyLineLyricsView.getLyricsReader() != null && mManyLineLyricsView.getLyricsReader().getHash().equals(seektoAudioInfo.getHash())) {
mManyLineLyricsView.seekto((int) seektoAudioInfo.getPlayProgress());
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOAD_FINISH:
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOADONEDLINESONG:
//网络歌曲下载完成
Bundle downloadedBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
DownloadTask downloadedTask = downloadedBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
String downloadedHash = downloadedTask.getTaskId();
if (downloadedTask != null && !TextUtils.isEmpty(downloadedHash)) {
if (mIsShowPopPlayList && mAdapter != null)
mAdapter.reshViewHolder(downloadedHash);
if (code == AudioBroadcastReceiver.ACTION_CODE_DOWNLOAD_FINISH) {
AudioInfo downloadedAudioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(downloadedHash);
if (downloadedHash.equals(downloadedAudioInfo.getHash())) {
reshDownloadView(downloadedAudioInfo);
}
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_UPDATE_PLAYLIST:
if (!mIsShowPopPlayList || mAdapter == null) {
return;
}
//设置当前歌曲数据
List<AudioInfo> audioInfoList = mConfigInfo.getAudioInfos();
mPopListSizeTv.setText(audioInfoList.size() + "");
mAdapter.notifyDataSetChanged();
break;
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOADONLINESONG:
//网络歌曲下载中
Bundle downloadOnlineSongBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
DownloadTask downloadingTask = downloadOnlineSongBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
String hash = mConfigInfo.getPlayHash();
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(hash);
if (audioInfo != null && downloadingTask != null && !TextUtils.isEmpty(hash) && hash.equals(downloadingTask.getTaskId())) {
int downloadedSize = DownloadThreadInfoDB.getDownloadedSize(mContext, downloadingTask.getTaskId(), OnLineAudioManager.mThreadNum);
double pre = downloadedSize * 1.0 / audioInfo.getFileSize();
int downloadProgress = (int) (mMusicSeekBar.getMax() * pre);
mMusicSeekBar.setSecondaryProgress(downloadProgress);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_LRCLOADED:
//歌词加载完成
Bundle lrcloadedBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
String lrcHash = lrcloadedBundle.getString(AudioBroadcastReceiver.ACTION_DATA_KEY);
AudioInfo curAudioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (curAudioInfo != null && lrcHash.equals(curAudioInfo.getHash())) {
LyricsReader oldLyricsReader = mManyLineLyricsView.getLyricsReader();
LyricsReader newLyricsReader = LyricsManager.newInstance(mContext).getLyricsReader(lrcHash);
if (oldLyricsReader != null && newLyricsReader != null && oldLyricsReader.getHash().equals(newLyricsReader.getHash())) {
} else {
mManyLineLyricsView.setLyricsReader(newLyricsReader);
}
if (oldLyricsReader != null || newLyricsReader != null) {
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.seekto((int) curAudioInfo.getPlayProgress());
}
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_LRCRELOADING:
//歌词重新加载中
AudioInfo curAudioInfoTemp1 = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
LyricsReader oldLyricsReader = mManyLineLyricsView.getLyricsReader();
if (oldLyricsReader == null || oldLyricsReader.getHash().equals(curAudioInfoTemp1.getHash())) {
//加载中
mManyLineLyricsView.initLrcData();
mManyLineLyricsView.setLrcStatus(AbstractLrcView.LRCSTATUS_LOADING);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_LRCRELOADED:
//歌词重新加载
Bundle lrcreloadedBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
String reloadlrcHash = lrcreloadedBundle.getString(AudioBroadcastReceiver.ACTION_DATA_KEY);
AudioInfo curAudioInfoTemp = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (curAudioInfoTemp != null && reloadlrcHash.equals(curAudioInfoTemp.getHash())) {
if(curAudioInfoTemp.IsOnlyMV()){return;}
LyricsReader newLyricsReader = LyricsManager.newInstance(mContext).getLyricsReader(reloadlrcHash);
if (newLyricsReader != null) {
mManyLineLyricsView.setLyricsReader(newLyricsReader);
}
if (newLyricsReader != null) {
if (mManyLineLyricsView.getLrcStatus() == AbstractLrcView.LRCSTATUS_LRC) {
mManyLineLyricsView.seekto((int) curAudioInfoTemp.getPlayProgress());
}
}
}
break;
case AudioBroadcastReceiver.ACTION_CODE_RELOADSINGERIMG:
Bundle singerReloadBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
String singerHash = singerReloadBundle.getString(AudioBroadcastReceiver.ACTION_DATA_KEY);
AudioInfo curSingerAudioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (curSingerAudioInfo != null && curSingerAudioInfo.getHash().equals(singerHash)) {
if(curSingerAudioInfo.IsOnlyMV()){return;}
mUIHandler.sendEmptyMessage(MESSAGE_CODE_SINGER_RELOAD);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_LOCK_LRC_CHANGE:
//锁屏歌词发生改变
changeLrcTypeIcon();
break;
case AudioBroadcastReceiver.ACTION_CODE_UPDATE_LIKE:
//喜欢/不喜欢
Bundle likeBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
String likeHash = likeBundle.getString(AudioBroadcastReceiver.ACTION_DATA_KEY);
String curHash = mConfigInfo.getPlayHash();
if (!curHash.equals(likeHash)) return;
AudioInfo curAudioInfoTemp2 = AudioPlayerManager.newInstance(mContext).getCurSong(curHash);
if (curAudioInfoTemp2 == null) return;
if (AudioInfoDB.isLikeAudioExists(mContext, curAudioInfoTemp2.getHash())) {
mUnLikeMenuBtn.setVisibility(View.GONE);
mLikeMenuBtn.setVisibility(View.VISIBLE);
} else {
mUnLikeMenuBtn.setVisibility(View.VISIBLE);
mLikeMenuBtn.setVisibility(View.GONE);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_MAKE_SUCCESS:
//歌词制作成功
Bundle makeBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
String lrchash = makeBundle.getString(AudioBroadcastReceiver.ACTION_DATA_KEY);
LyricsManager.newInstance(mContext).remove(lrchash);
if (mConfigInfo.getPlayHash().equals(lrchash)) {
AudioInfo lrcAudioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(lrchash);
//加载歌词
String keyWords = lrcAudioInfo.getTitle();
LyricsManager.newInstance(mContext).loadLyrics(lrcAudioInfo.getFilePath(),keyWords, keyWords, lrcAudioInfo.getDuration() + "", lrcAudioInfo.getHash(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler), null);
//加载中
mManyLineLyricsView.initLrcData();
mManyLineLyricsView.setLrcStatus(AbstractLrcView.LRCSTATUS_LOADING);
}
break;
}
}
/**
* 初始化播放列表播放模式
*
* @param playMode
* @param modeAllImg
* @param modeRandomImg
* @param modeSingleImg
*/
private void initPlayModeView(int playMode, View modeAllImg, View modeRandomImg, View modeSingleImg, boolean isTipShow) {
if (playMode == 0) {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_all_text));
modeAllImg.setVisibility(View.VISIBLE);
modeRandomImg.setVisibility(View.INVISIBLE);
modeSingleImg.setVisibility(View.INVISIBLE);
} else if (playMode == 1) {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_random_text));
modeAllImg.setVisibility(View.INVISIBLE);
modeRandomImg.setVisibility(View.VISIBLE);
modeSingleImg.setVisibility(View.INVISIBLE);
} else {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_single_text));
modeAllImg.setVisibility(View.INVISIBLE);
modeRandomImg.setVisibility(View.INVISIBLE);
modeSingleImg.setVisibility(View.VISIBLE);
}
//
if (isTipShow)
mConfigInfo.setPlayModel(playMode).save();
}
@Override
public void onBackPressed() {
if (mIsMoreMenuPopShowing) {
hideMoreMenuView();
return;
}
if (mIsSongInfoPopShowing) {
hideSongInfoView();
return;
}
if (mIsSingerListPopShowing) {
hideSingerListView();
return;
}
if (mIsShowPopPlayList) {
hidePopPlayListView();
return;
}
mRotateLayout.closeView();
}
@Override
public void finish() {
if (mExtraLrcTypeHandler != null) {
mExtraLrcTypeHandler.removeCallbacksAndMessages(null);
}
mSingerImageView.release();
mManyLineLyricsView.release();
destroyReceiver();
super.finish();
}
/**
* 销毁广播
*/
private void destroyReceiver() {
if (mAudioBroadcastReceiver != null) {
mAudioBroadcastReceiver.unregisterReceiver(mContext);
}
}
public interface PopSingerListener {
public void search(String singerName);
}
}