package com.literem.matrix.music.fragment;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.literem.matrix.common.bluetooth.BTData;
import com.literem.matrix.common.bluetooth.BTDialog;
import com.literem.matrix.common.bluetooth.BTUtils;
import com.literem.matrix.common.data.DataUtils;
import com.literem.matrix.common.dialog.DialogPrompt;
import com.literem.matrix.common.dialog.DialogSelectAnim;
import com.literem.matrix.common.dialog.PopupItemMenu;
import com.literem.matrix.common.font.CommandUtils;
import com.literem.matrix.common.utils.ToastUtils;
import com.literem.matrix.common.widget.DrawableTextView;
import com.literem.matrix.music.R;
import com.literem.matrix.music.activity.AddLyricActivity;
import com.literem.matrix.music.activity.MusicActivity;
import com.literem.matrix.music.activity.TextEditActivity;
import com.literem.matrix.music.callback.OnMusicDetailsDialogListener;
import com.literem.matrix.music.callback.OnMusicServiceListener;
import com.literem.matrix.music.callback.UpdateProgressListener;
import com.literem.matrix.music.dialog.DialogAddLyric;
import com.literem.matrix.music.dialog.DialogMusicInfo;
import com.literem.matrix.music.dialog.DialogMusicUpdateInfo;
import com.literem.matrix.music.dialog.PopMusicDetails;
import com.literem.matrix.music.dialog.PopMusicPlayList;
import com.literem.matrix.music.dialog.PopMusicPlayMode;
import com.literem.matrix.music.entity.Music;
import com.literem.matrix.music.service.MusicService;
import com.literem.matrix.music.utils.SQLiteMusicUtils;
import com.literem.matrix.music.widget.LyricView;
import java.util.Random;
public class MusicPlayFragment extends Fragment implements UpdateProgressListener {
public static final int CHANGE_VOLUME = 6;
public static final int PLAY_MODE = 7;
//歌词相关
public static final int AddLyricAction = 10;
public static final int AddLyric = 11;//增加歌词
public static final int RemoveLyric = 12;//删除歌词
public static final int UpdateLyric = 13;//修改歌词
public static final int MakeLyric = 14;//制作歌词
public static final int MusicInfo = 20;
public static final int MusicUpdateInfo = 21;
public static final int MusicUpdateInfoAction = 22;
private String[] strTimes = new String[]{"00:0%1$d","00:%1$d","0%1$d:0%2$d","0%1$d:%2$d","%1$d:0%2$d","%1$d:%2$d"};
//控件
private LyricView lyricView;
private ImageView ivPlay;
private ImageView ivPlayMode;
private TextView tvTitle, tvSinger;
private TextView tvCurrentTime,tvTotalTime;
private SeekBar seekBar;
private DrawableTextView dtvLyricSync,dtvConnectBT, dtvAnim;
//dialog
private PopMusicPlayList playList;//音乐列表的弹出框
private MusicService musicService;
private PopMusicDetails musicDetails;
private MusicActivity.OnJumpListener jumpListener;
private String[] listAnim = new String[]{"翻页动画","自定义动画"};
private boolean isSync = false;//是否同步歌词到点阵屏上
private boolean isTogglePage = true;//是否同步歌词到点阵屏上
private boolean isTouchSeekBar;//是否正在拖动进度条
private int imgStart,imgPause;//播放、暂停图标
private int dragProgress = 0;//拖动进度条的临时值
private int singleLoop, listOrder, listRandom;
private int currentMusicId = -1;//当前播放的音乐id
private int PlayMode;
private AudioManager am;//音量对象
private MusicActivity.UpdateHandler handler;
private Context context;
private BTDialog btDialog;
public MusicPlayFragment(Context context, PopMusicPlayList playList, MusicService musicService, MusicActivity.UpdateHandler handler, MusicActivity.OnJumpListener jumpListener){
this.context = context;
this.playList = playList;
this.musicService = musicService;
this.handler = handler;
this.jumpListener = jumpListener;
imgPause = R.drawable.img_player_start;
imgStart = R.drawable.img_player_pause;
listOrder = R.drawable.img_mode_order_white;
singleLoop = R.drawable.img_mode_single_loop_white;
listRandom = R.drawable.img_mode_random_white;
am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_music_play,container,false);
lyricView = view.findViewById(R.id.lyric_view);
lyricView.setOnLyricViewListener(onLyricViewListener);
dtvLyricSync = view.findViewById(R.id.dtv_lyric_sync);
dtvConnectBT = view.findViewById(R.id.dtv_connect_bt);
dtvAnim = view.findViewById(R.id.dtv_toggle_anim);
dtvLyricSync.setOnClickListener(onClickListener);
dtvConnectBT.setOnClickListener(onClickListener);
dtvAnim.setOnClickListener(onClickListener);
ivPlay = view.findViewById(R.id.iv_lyric_play);
ivPlayMode = view.findViewById(R.id.iv_lyric_play_mode);
tvTitle = view.findViewById(R.id.tv_lyric_title);
tvSinger = view.findViewById(R.id.tv_lyric_signer);
tvCurrentTime = view.findViewById(R.id.tv_lyric_current_time);
tvTotalTime = view.findViewById(R.id.tv_lyric_current_total_time);
seekBar = view.findViewById(R.id.sb_play_progress);
seekBar.setOnSeekBarChangeListener(mSeekBarChangeListener);
view.findViewById(R.id.iv_play_list).setOnClickListener(onClickListener);
view.findViewById(R.id.iv_lyric_next).setOnClickListener(onClickListener);
view.findViewById(R.id.iv_lyric_last).setOnClickListener(onClickListener);
ivPlay.setOnClickListener(onClickListener);
ivPlayMode.setOnClickListener(onClickListener);
view.findViewById(R.id.iv_lyric_more).setOnClickListener(onClickListener);
view.findViewById(R.id.iv_lyric_back).setOnClickListener(onClickListener);
ivPlayMode.setImageResource(listOrder);
this.PlayMode = playList.getPlayMode();//获取播放模式
//setPlayImage(false);//初次进入,设置播放图标为暂停
dtvConnectBT.setText(BTUtils.getInstance().getConnect()?"已连接":"未连接");
refreshPlayInfo();
return view;
}
//每次显示当前fragment时都调用,判断是否更新的歌曲信息
public void refreshPlayInfo(){
//检查播放模式是否改变了
if(this.PlayMode != playList.getPlayMode()){
setPlayMode(playList.getPlayMode());
}
//刷新播放图标
setPlayImage(musicService.getPlayingState());
//检查歌曲是否改变了,如果是,则要更新
if(musicService.getCurrentMusicId() != currentMusicId){
currentMusicId = musicService.getCurrentMusicId();
setPlayingInfo(musicService.getCurrentMusic());
}
}
private void refreshLyric(){
int musicId = musicService.getCurrentMusicId();
String lyric = SQLiteMusicUtils.getInstance(context).queryMusicLyric(musicId);
lyricView.setLrc(lyric);
}
//region 设置
/**
* 更新音量大小
* @param volume 音量
*/
public void setChangeVolume(int volume){
if(musicDetails != null) musicDetails.setVolume(volume);
}
private void setPlayImage(boolean status){
ivPlay.setImageResource(status ? imgStart : imgPause);
}
/**
* 设
没有合适的资源?快使用搜索试试~ 我知道了~
基于ESP32的多功能LED点阵屏幕的安卓上位机软件源码
共456个文件
xml:170个
png:136个
java:128个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 26 浏览量
2024-05-16
11:16:14
上传
评论
收藏 2.2MB ZIP 举报
温馨提示
【作品名称】:基于ESP32的多功能LED点阵屏幕的安卓上位机软件源码 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于ESP32的多功能LED点阵屏幕的安卓上位机软件源码
资源推荐
资源详情
资源评论
收起资源包目录
基于ESP32的多功能LED点阵屏幕的安卓上位机软件源码 (456个子文件)
gradlew.bat 2KB
GBK16.bin 690KB
.gitignore 208B
.gitignore 7B
.gitignore 7B
.gitignore 7B
build.gradle 1KB
build.gradle 1KB
build.gradle 997B
build.gradle 558B
settings.gradle 66B
gradlew 5KB
hzk16 261KB
gradle-wrapper.jar 53KB
MusicPlayFragment.java 27KB
LyricView.java 26KB
GifDecoder.java 22KB
DisplayModuleActivity.java 22KB
SystemBarTintManager.java 18KB
DisplayFrameActivity.java 17KB
StatusBarUtil.java 17KB
MainActivity.java 16KB
MusicActivity.java 16KB
LyricMakeActivity.java 16KB
MusicListFragment.java 15KB
MainHomeFragment.java 13KB
MusicService.java 13KB
RowScrollView.java 12KB
CommandUtils.java 10KB
SQLiteMusicUtils.java 10KB
PopupGifFont.java 10KB
DisplayStaticActivity.java 10KB
BitmapUtils.java 9KB
BTUtils.java 9KB
TerminalActivity.java 9KB
PopMusicPlayList.java 9KB
PopupImageFont.java 9KB
PopupCharFont.java 8KB
DefaultLrcBuilder.java 8KB
AdapterMusicList.java 8KB
BaseBTActivity.java 8KB
DisplayScrollActivity.java 7KB
HexUtils.java 7KB
MultipleCircleView.java 7KB
AddLyricActivity.java 7KB
NotifyService.java 6KB
TerminalAdapter.java 6KB
LocalMusicUtils.java 6KB
AdapterPopupPlayList.java 6KB
BTDialog.java 6KB
DialogSelectAnim.java 6KB
DialogSetAnimation.java 5KB
ConnectBTAdapter.java 5KB
DialogNumberInput.java 5KB
DisplayUtil.java 5KB
TimeUtils.java 5KB
DialogMusicInfo.java 5KB
DrawableTextView.java 5KB
AdapterLocalLyric.java 5KB
DialogList.java 5KB
EncodeUtils.java 5KB
AdapterScanMusic.java 5KB
GBKFontUtils.java 5KB
PopMusicDetails.java 5KB
TextEditActivity.java 4KB
PopupImageFontAdapter.java 4KB
DialogTextInput.java 4KB
BTHandler.java 4KB
ScanMusicActivity.java 4KB
HZKFontUtils.java 4KB
GifFrameAdapter.java 4KB
ThreadLocalCoders.java 4KB
SoftKeyboardListener.java 4KB
LrcRow.java 4KB
DialogPrompt.java 4KB
OSUtils.java 3KB
MediaPlayerUtils.java 3KB
BaseActivity.java 3KB
DisplayClockActivity.java 3KB
HiddenAnimUtils.java 3KB
DialogAddLyric.java 3KB
MainMoreFragment.java 3KB
ResponseParse.java 3KB
PopupMessageMore.java 3KB
PopMusicPlayMode.java 3KB
BasePopupWindow.java 3KB
PlayListData.java 3KB
Music.java 3KB
PreMultipleCircleView.java 3KB
DialogWarn.java 3KB
LoadingDialog.java 3KB
PopupChooseMusic.java 3KB
SQLiteHelper.java 3KB
RoundImageView.java 2KB
BaseRecycleViewAdapter.java 2KB
ConfigUtils.java 2KB
DialogMusicUpdateInfo.java 2KB
FileUtils.java 2KB
PopupItemMenu.java 2KB
BaseDialog.java 2KB
共 456 条
- 1
- 2
- 3
- 4
- 5
资源评论
MarcoPage
- 粉丝: 3077
- 资源: 3405
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功