package com.manbas.downmusic.activity;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.widget.AppCompatSeekBar;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import com.manbas.downmusic.MvpView.PlayingView;
import com.manbas.downmusic.R;
import com.manbas.downmusic.base.LogUtis;
import com.manbas.downmusic.bean.LyricContent;
import com.manbas.downmusic.bean.SingleSongInfoBean;
import com.manbas.downmusic.bean.SongMsgBean;
import com.manbas.downmusic.config.Config;
import com.manbas.downmusic.fragment.PlayingForCDFragment;
import com.manbas.downmusic.fragment.PlayingForLrcFragment;
import com.manbas.downmusic.presenter.PlayingPresenter;
import com.manbas.downmusic.service.MediaPlayService;
import com.manbas.downmusic.utlis.LrcRead;
import com.manbas.downmusic.utlis.ProgressDialogUtil;
import com.manbas.downmusic.utlis.ToastUtils;
import com.zhy.android.percent.support.PercentRelativeLayout;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by Administrator on 2016/12/29.
*/
public class PlayingActivity extends Activity implements PlayingView, MediaPlayer.OnBufferingUpdateListener {
//广播Action
public static final String ACTION_PLAY = "ACTION_PLAY";
public static final String ACTION_PAUSE = "ACTION_PAUSE";
public static final String ACTION_NEXT = "ACTION_NEXT";
public static final String ACTION_LAST = "ACTION_LAST";
String musicStatus = "";
@BindView(R.id.iv_back)
ImageView ivBack;
@BindView(R.id.tv_songname)
TextView tvSongname;
@BindView(R.id.tv_artistName)
TextView tvArtistName;
@BindView(R.id.iv_share)
ImageView ivShare;
@BindView(R.id.seekbar)
AppCompatSeekBar seekbar;
@BindView(R.id.iv_previous)
ImageView ivPrevious;
@BindView(R.id.iv_play)
ImageView ivPlay;
@BindView(R.id.iv_next)
ImageView ivNext;
@BindView(R.id.tv_currentTime)
TextView tv_currentTime;
@BindView(R.id.tv_durationTime)
TextView tv_durationTime;
@BindView(R.id.foregroundbg)
PercentRelativeLayout foregroundbg;
SingleSongInfoBean singleSongInfoBean;
PlayingPresenter playingPresenter;
public static MediaPlayService mediaPlayService;
SimpleDateFormat format = new SimpleDateFormat("mm:ss");
PlayingForCDFragment forCDFragment = new PlayingForCDFragment();
//获取进来的歌曲id
private static String lastUrl;
private static String lastMusicId;
private static String lastimgUrl;
private static Integer position;
//初始化界面控件
String musicUrl = "";
String songPic = "";
int CurrentTime = 0;
int CountTime = 0;
int currentDurationP = 0;
int totaldurationP = 0;
//控制fragment的切换
int tag = 0;
boolean isShowCd = true;
//获取歌词文件
int index;
List<SongMsgBean> songlist;
List<LyricContent> lyricList = new ArrayList<>();
//更新ui界面
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
seekbar.setProgress(seekbar.getProgress() + 1000);
tv_currentTime.setText(duration2Time(seekbar.getProgress()));
handler.removeCallbacks(runnable);//避免重复post,导致时间增加频率加快
handler.postDelayed(runnable, 1000);
}
};
ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mediaPlayService = ((MediaPlayService.MyBindler) service).getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
mediaPlayService = null;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playing_activity);
currentDurationP = getIntent().getIntExtra("currentDuration", 0);
totaldurationP = getIntent().getIntExtra("Duration", 0);
setTopState();//顶部状态栏透明
ButterKnife.bind(this);
if(!isServiceRunning(MediaPlayService.class)){
onBindService();//绑定服务并开启
}
playingPresenter = new PlayingPresenter(this, this);
songlist = (List<SongMsgBean>) getIntent().getSerializableExtra("songList");
if (songlist == null) {
songlist = Config.songMsgBeanList;
} else {
Config.songMsgBeanList = songlist;
}
if (getIntent().getStringExtra("index") != null) {
index = Integer.parseInt(getIntent().getStringExtra("index"));
Config.MUSIC_INDEX = index;
} else {
index = Config.MUSIC_INDEX;
}
position=index;
if(songlist.get(position).getSong_id().equals(lastMusicId)){
if(musicStatus.equals(ACTION_PLAY)){
ivPlay.setImageResource(R.mipmap.pause);
}else if(musicStatus.equals(ACTION_PAUSE)){
ivPlay.setImageResource(R.mipmap.play);
}
initlastSeekBar();
setFragment(forCDFragment,lastimgUrl);
initView();
onListener();
}else{
playingPresenter.getSingleSongMsg(songlist.get(position).getSong_id());
lastMusicId=songlist.get(position).getSong_id();
}
playAndLoadLrc();//加载歌曲和歌词
singleSongInfoBean = new SingleSongInfoBean();
}
private void onListener() {
seekbar.setOnSeekBarChangeListener(new SeekBarChangeEvent());
mediaPlayService.mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayService.mediaPlayer.setOnCompletionListener(new MeidaOnCompletion());
}
/*根据时长格式化称时间文本*/
private String duration2Time(int duration) {
int min = duration / 1000 / 60;
int sec = duration / 1000 % 60;
Log.i("music", "min:" + min + "| sec:" + sec);
return (min < 10 ? "0" + min : min + "") + ":" + (sec < 10 ? "0" + sec : sec + "");
}
private void initSeekBar(int totalduration) {
seekbar.setMax(totalduration);
tv_currentTime.setText(duration2Time(0));
tv_durationTime.setText(duration2Time(totalduration));
handler.post(runnable);
}
private void initlastSeekBar(){
seekbar.setMax(mediaPlayService.mediaPlayer.getDuration());
seekbar.setProgress(mediaPlayService.mediaPlayer.getCurrentPosition());
tv_currentTime.setText(duration2Time(mediaPlayService.mediaPlayer.getCurrentPosition()));
tv_durationTime.setText(duration2Time(mediaPlayService.mediaPlayer.getDuration()));
handler.post(runnable);
}
/**
* @param
* @return
* @desc 初始化界面控件
*/
private void initView() {
// tv_durationTime.setText(format.format(new Date(songlist.get(index).getFile_duration() * 1000)));
tvSongname.setText(songlist.get(index).getTitle());
tvArtistName.setText(songlist.get
没有合适的资源?快使用搜索试试~ 我知道了~
android在线音乐播放器MusicPlayer
共86个文件
java:27个
xml:27个
png:20个
需积分: 9 26 下载量 45 浏览量
2017-01-24
11:27:17
上传
评论
收藏 674KB ZIP 举报
温馨提示
初学,怼了个简单的在线音乐播放器,功能:基本的音乐播放功能,notification、歌词滚动
资源推荐
资源详情
资源评论
收起资源包目录
manbasji-MusicPlayer-master.zip (86个子文件)
MusicPlayer
.gitignore 118B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 233B
build.gradle 564B
gradlew.bat 2KB
gradlew 5KB
app
.gitignore 7B
build.gradle 1KB
proguard-rules.pro 639B
src
test
java
com
manbas
downmusic
ExampleUnitTest.java 398B
main
AndroidManifest.xml 1KB
java
com
manbas
downmusic
bean
SingleSongInfoBean.java 12KB
LyricContent.java 414B
SongMsgBean.java 6KB
view
CircleTransform.java 2KB
CustomProgressDialog.java 915B
LyricView.java 3KB
api
GetSongListApi.java 847B
SingleSongApi.java 622B
presenter
PlayingPresenter.java 2KB
SongListPresenter.java 3KB
MvpView
SongListView.java 287B
PlayingView.java 337B
config
Config.java 2KB
adapter
SongListAdapter.java 3KB
fragment
PlayingForLrcFragment.java 4KB
PlayingForCDFragment.java 6KB
utlis
ToastUtils.java 3KB
LrcRead.java 4KB
ProgressDialogUtil.java 3KB
service
MediaPlayService.java 4KB
activity
SongListActivity.java 3KB
PlayingActivity.java 19KB
base
BaseApi.java 216B
LogUtis.java 359B
BaseUtils.java 601B
res
values
styles.xml 1KB
colors.xml 9KB
strings.xml 72B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
layout
playingforlrc_fragment.xml 508B
playing_activity.xml 6KB
activity_main.xml 745B
song_hor_item.xml 2KB
customprogressdialog.xml 790B
songlist_activity.xml 1015B
song_item.xml 1KB
online_play.xml 2KB
main.xml 530B
playingforcd_fragment.xml 1KB
toast.xml 678B
mipmap-xhdpi
ic_disc.png 90KB
ic_launcher.png 5KB
ic_blackground.png 73KB
mipmap-hdpi
ic_launcher.png 3KB
ic_disc_blackground.png 2KB
base_bg.jpg 82KB
Previous.png 665B
back.png 377B
cd_icon.png 284KB
play.png 2KB
point.png 330B
like_chose.png 868B
share.png 908B
pause.png 1KB
next.png 640B
like.png 1006B
ic_seekbar_thumb.png 2KB
loading.png 548B
drawable
ui_seekbar.xml 645B
anim
loading.xml 284B
mipmap-mdpi
ic_launcher.png 2KB
values-w820dp
dimens.xml 358B
mipmap-xxxhdpi
ic_launcher.png 10KB
androidTest
java
com
manbas
downmusic
ExampleInstrumentedTest.java 744B
gradle.properties 730B
.idea
runConfigurations.xml 564B
encodings.xml 159B
vcs.xml 180B
misc.xml 3KB
modules.xml 460B
copyright
profiles_settings.xml 74B
compiler.xml 686B
gradle.xml 626B
settings.gradle 15B
共 86 条
- 1
资源评论
manbas_j
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功