| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- package com.usoftchina.pay;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.SeekBar;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.common.LogUtil;
- import com.core.utils.StatusBarUtil;
- import com.lg.lrcview_master.DefaultLrcParser;
- import com.lg.lrcview_master.LrcRow;
- import com.lg.lrcview_master.LrcView.OnLrcClickListener;
- import com.lg.lrcview_master.LrcView.OnSeekToListener;
- import com.usoftchina.music.R;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.util.List;
- public class MainMusicActivity extends AppCompatActivity {
- private MediaPlayer mPlayer;
- /** 控制播放的SeekBar***/
-
- private SeekBar mPlayerSeekBar;
- /**控制歌词字体大小的SeekBar***/
- private SeekBar mLrcSeekBar;
- private Button mPlayBtn;
- private com.lg.lrcview_master.LrcView mLrcView;
- private TextView tv_timeStart;
- private TextView tv_timeTotal;
- private Toast mPlayerToast;
- private Toast mLrcToast;
- private Toolbar toolbar;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main_music);
-
-
- initViews();
- initPlayer();
- toolbar=findViewById(R.id.commonToolBar);
- StatusBarUtil.immersive(this, 0x00000000, 0.0f);
- setSupportActionBar(toolbar);
- getSupportActionBar().setDisplayShowTitleEnabled(false);
- StatusBarUtil.setPaddingSmart(this, toolbar);
- toolbar.setNavigationIcon(R.drawable.back_black);
- toolbar.setNavigationOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- onBackPressed();
- }
- });
- }
- private void initViews() {
- mLrcView = (com.lg.lrcview_master.LrcView) findViewById(R.id.lrcView);
- mLrcView.setOnSeekToListener(onSeekToListener);
- mLrcView.setOnLrcClickListener(onLrcClickListener);
- tv_timeStart = findViewById(R.id.tv_timeStart);
- tv_timeTotal=findViewById(R.id.tv_timeTotal);
- mPlayerSeekBar = (SeekBar) findViewById(R.id.include_player_seekbar);
- mLrcSeekBar = (SeekBar) findViewById(R.id.include_lrc_seekbar);
- mLrcSeekBar.setMax(100);
- //为seekbar设置当前的progress
- mLrcSeekBar.setOnSeekBarChangeListener(onSeekBarChangeListener);
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- float scalingFactor = com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR + 0*(com.lg.lrcview_master.LrcView.MAX_SCALING_FACTOR- com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR)/100;
- LogUtil.d("MusicApp","scalingFactor:"+scalingFactor+"");
- mLrcView.setLrcScalingFactor(scalingFactor);
- mPlayer.start();
- mLrcView.setLrcRows(getLrcRows());
- handler.sendEmptyMessage(0);
- mPlayBtn.setText("暂停");
- mPlayBtn.setSelected(true);
- }
- },1000);
- mPlayBtn = (Button) findViewById(R.id.btnPlay);
- mPlayerSeekBar.setOnSeekBarChangeListener(onSeekBarChangeListener);
- mPlayBtn.setOnClickListener(onClickListener);
- //getCommonToolBar().setBackgroundResource(R.color.transparent);
-
- }
- @Override
- protected void onResume() {
- super.onResume();
-
- }
-
-
- @Override
- protected void onPause() {
- super.onPause();
- mPlayer.pause();
- mPlayBtn.setText("播放");
- mPlayBtn.setSelected(false);
- }
- private void initPlayer() {
- mPlayer = MediaPlayer.create(this, R.raw.yingtang);
- mPlayer.setOnCompletionListener(onCompletionListener);
-
- }
- OnCompletionListener onCompletionListener = new OnCompletionListener() {
-
- @Override
- public void onCompletion(MediaPlayer mp) {
- mPlayBtn.setText("play");
- //mPlayBtn.setSelected(false);
- mLrcView.reset();
- handler.removeMessages(0);
- mPlayerSeekBar.setProgress(0);
- mPlayer.start();
- mLrcView.setLrcRows(getLrcRows());
- handler.sendEmptyMessage(0);
- mPlayBtn.setText("暂停");
- mPlayBtn.setSelected(true);
-
- }
- };
- OnLrcClickListener onLrcClickListener = new OnLrcClickListener() {
- @Override
- public void onClick() {
- //Toast.makeText(getApplicationContext(), "歌词被点击啦", Toast.LENGTH_SHORT).show();
- }
- };
- OnSeekToListener onSeekToListener = new OnSeekToListener() {
- @Override
- public void onSeekTo(int progress) {
- mPlayer.seekTo(progress);
-
- }
- };
- Handler handler = new Handler(){
- public void handleMessage(android.os.Message msg) {
- mPlayerSeekBar.setMax(mPlayer.getDuration());
- mPlayerSeekBar.setProgress(mPlayer.getCurrentPosition());
- handler.sendEmptyMessageDelayed(0, 100);
- };
- };
- OnClickListener onClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- if(v == mPlayBtn){
- if("play".equals(mPlayBtn.getText())){
- mPlayer.start();
- mLrcView.setLrcRows(getLrcRows());
- handler.sendEmptyMessage(0);
- mPlayBtn.setText("暂停");
- mPlayBtn.setSelected(true);
- }else{
- if(mPlayer.isPlaying()){
- mPlayer.pause();
- mPlayBtn.setText("播放");
- mPlayBtn.setSelected(false);
- }else{
- mPlayBtn.setSelected(true);
- mPlayer.start();
- mPlayBtn.setText("暂停");
- }
- }
- }
- }
- };
- OnSeekBarChangeListener onSeekBarChangeListener = new OnSeekBarChangeListener() {
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- if(seekBar == mPlayerSeekBar){
- mPlayer.seekTo(seekBar.getProgress());
- handler.sendEmptyMessageDelayed(0, 100);
- }
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- if(seekBar == mPlayerSeekBar){
- handler.removeMessages(0);
- }
- }
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress,
- boolean fromUser) {
- if(seekBar == mPlayerSeekBar){
- mLrcView.seekTo(progress, true,fromUser);
- // Log.d("timeStr",mLrcView.getmLrcRows().get(0).getTime()+"");
- Log.d("timeStrA",progress+"");
- tv_timeStart.setText(formatTimeFromProgress(progress));
- tv_timeTotal.setText(formatTimeFromProgress(mPlayer.getDuration()));
- if(fromUser){
-
- showPlayerToast(formatTimeFromProgress(progress));
- }
- }else if(seekBar == mLrcSeekBar){
- float scalingFactor = com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR + progress*(com.lg.lrcview_master.LrcView.MAX_SCALING_FACTOR- com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR)/100;
- mLrcView.setLrcScalingFactor(scalingFactor);
- showLrcToast((int)(scalingFactor*100)+"%");
- }
- }
- };
- /**
- * 将播放进度的毫米数转换成时间格式
- * 如 3000 --> 00:03
- * @param progress
- * @return
- */
- private String formatTimeFromProgress(int progress){
- //总的秒数
- int msecTotal = progress/1000;
- int min = msecTotal/60;
- int msec = msecTotal%60;
- String minStr = min < 10 ? "0"+min:""+min;
- String msecStr = msec < 10 ? "0"+msec:""+msec;
- return minStr+":"+msecStr;
- }
- /**
- * 获取歌词List集合
- * @return
- */
- private List<LrcRow> getLrcRows(){
- List<LrcRow> rows = null;
- InputStream is = getResources().openRawResource(R.raw.yingtanglrc);
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
- String line ;
- StringBuffer sb = new StringBuffer();
- try {
- while((line = br.readLine()) != null){
- sb.append(line+"\n");
- }
- System.out.println(sb.toString());
- rows = DefaultLrcParser.getIstance().getLrcRows(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- return rows;
- }
- private TextView mPlayerToastTv;
- private void showPlayerToast(String text){
- if(mPlayerToast == null){
- mPlayerToast = new Toast(this);
- mPlayerToastTv = (TextView) LayoutInflater.from(this).inflate(R.layout.toast, null);
- mPlayerToast.setView(mPlayerToastTv);
- mPlayerToast.setDuration(Toast.LENGTH_SHORT);
- }
- mPlayerToastTv.setText(text);
- mPlayerToast.show();
- }
- private TextView mLrcToastTv;
- private void showLrcToast(String text){
- if(mLrcToast == null){
- mLrcToast = new Toast(this);
- mLrcToastTv = (TextView) LayoutInflater.from(this).inflate(R.layout.toast, null);
- mLrcToast.setView(mLrcToastTv);
- mLrcToast.setDuration(Toast.LENGTH_SHORT);
- }
- mLrcToastTv.setText(text);
- mLrcToast.show();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- handler.removeMessages(0);
- mPlayer.stop();
- mPlayer.release();
- mPlayer = null;
- mLrcView.reset();
- }
- }
|