BVB Source Codes

The Android source code for beginners music player design and source code Show ControlPlay.java Source code

Return Download The Android source code for beginners music player design and source code: download ControlPlay.java Source code - Download The Android source code for beginners music player design and source code Source code - Type:.java
  1. package com.android.cwd;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import android.app.Service;
  7. import android.content.Intent;
  8. import android.graphics.Bitmap;
  9. import android.graphics.BitmapFactory;
  10. import android.graphics.drawable.BitmapDrawable;
  11. import android.media.MediaPlayer;
  12. import android.media.MediaPlayer.OnCompletionListener;
  13. import android.net.Uri;
  14. import android.os.Handler;
  15. import android.os.IBinder;
  16. import android.view.animation.AnimationUtils;
  17. import android.widget.Toast;
  18.  
  19. import com.android.cwd.LrcProcess.LrcContent;
  20.  
  21. public class ControlPlay extends Service {
  22.  
  23.         public static MediaPlayer myMediaPlayer;
  24.  
  25.         public C_MusicPlayerActivity c_ma = new C_MusicPlayerActivity();
  26.         public LrcProcess mLrcProcess;
  27.         public LrcView mLrcView;
  28.  
  29.         public static int playing_id = 0;
  30.  
  31.         // 初始化歌词检索值
  32.         private int index = 0;
  33.         // 初始化歌曲播放时间的变量
  34.         private int CurrentTime = 0;
  35.         // 初始化歌曲总时间的变量
  36.         private int CountTime = 0;
  37.         // 创建对象
  38.         private List<LrcContent> lrcList = new ArrayList<LrcContent>();
  39.  
  40.         public static Music_infoAdapter m_in;
  41.  
  42.         public Thread thread;
  43.         Handler handler = new Handler();
  44.         public boolean playFlag = true;
  45.  
  46.         @Override
  47.         public IBinder onBind(Intent intent) {
  48.                 // TODO Auto-generated method stub
  49.                 return null;
  50.         }
  51.  
  52.         @Override
  53.         public void onCreate() {
  54.                 // TODO Auto-generated method stub
  55.                 super.onCreate();
  56.                 initMediaSource(initMusicUri(0));
  57.         }
  58.  
  59.         @Override
  60.         public void onDestroy() {
  61.                 // TODO Auto-generated method stub
  62.  
  63.                 super.onDestroy();
  64.                 if (myMediaPlayer != null) {
  65.                         myMediaPlayer.stop();
  66.                         myMediaPlayer.release();
  67.                         myMediaPlayer = null;
  68.                 }
  69.  
  70.         }
  71.  
  72.         @Override
  73.         public void onStart(Intent intent, int startId) {
  74.                 // TODO Auto-generated method stub
  75.                 super.onStart(intent, startId);
  76.  
  77.                 String playFlag = intent.getExtras().getString("control");
  78.  
  79.                 if ("play".equals(playFlag)) {
  80.                         playMusic();
  81.                 } else if ("next".equals(playFlag)) {
  82.                         playNext();
  83.                 } else if ("front".equals(playFlag)) {
  84.                         playFront();
  85.                 } else if ("listClick".equals(playFlag)) {
  86.                         playing_id = intent.getExtras().getInt("musicId_1");
  87.                         initMediaSource(initMusicUri(playing_id));
  88.                         playMusic();
  89.                 } else if ("gridClick".equals(playFlag)) {
  90.                         playing_id = intent.getExtras().getInt("musicId_2");
  91.                         initMediaSource(initMusicUri(playing_id));
  92.                         playMusic();
  93.                 }
  94.         }
  95.  
  96.         /**
  97.          * 初始化媒体对象
  98.          *
  99.          * @param mp3Path
  100.          *            mp3路径
  101.          */
  102.         public void initMediaSource(String mp3Path) {
  103.                 Uri mp3Uri = Uri.parse(mp3Path);
  104.                 if (myMediaPlayer != null) {
  105.                         myMediaPlayer.stop();
  106.                         myMediaPlayer.reset();
  107.                         myMediaPlayer = null;
  108.                 }
  109.  
  110.                 // 为myMediaPlayer创建对象
  111.                 myMediaPlayer = MediaPlayer.create(this, mp3Uri);
  112.  
  113.         }
  114.  
  115.         /**
  116.          * 返回列表第几行的歌曲路径
  117.          *
  118.          * @param _id
  119.          *            表示歌曲序号,从0开始
  120.          */
  121.         public String initMusicUri(int _id) {
  122.                 playing_id = _id;
  123.                 String s;
  124.                 // 判断列表和列表长度不为空时才获取
  125.                 if (Music_infoAdapter.musicList != null
  126.                                 && Music_infoAdapter.musicList.size() != 0) {
  127.                         s = Music_infoAdapter.musicList.get(_id).getMusicPath();
  128.                         return s;
  129.                 } else {
  130.                         // 否则返回空字符串
  131.                         return "";
  132.                 }
  133.         }
  134.  
  135.         /**
  136.          * 音乐播放方法,并且带有暂停方法
  137.          */
  138.         public void playMusic() {
  139.  
  140.                 // 判断歌曲不能为空
  141.  
  142.                 if (myMediaPlayer != null && Music_infoAdapter.musicList.size() != 0) {
  143.                         if (myMediaPlayer.isPlaying()) {
  144.                                 // 歌曲暂停
  145.                                 myMediaPlayer.pause();
  146.                                 // 暂停跟新GIF动画
  147.                                 C_MusicPlayerActivity.runEql.setFlag(false);
  148.                                 C_MusicPlayerActivity.runEql.invalidate();
  149.                                 // 更换播放按钮背景
  150.                                 C_MusicPlayerActivity.play_ImageButton
  151.                                                 .setBackgroundResource(R.drawable.play_button);
  152.                                 // 取消通知
  153.                                 C_MusicPlayerActivity.mNotificationManager.cancel(1);
  154.                         } else {
  155.                                 myMediaPlayer.start();
  156.  
  157.                                 // /////////////////////// 初始化歌词配置 /////////////////////// //
  158.                                 mLrcProcess = new LrcProcess();
  159.                                 // 读取歌词文件
  160.                                 mLrcProcess.readLRC(Music_infoAdapter.musicList.get(playing_id)
  161.                                                 .getMusicPath());
  162.                                 // 传回处理后的歌词文件
  163.                                 lrcList = mLrcProcess.getLrcContent();
  164.                                 C_MusicPlayerActivity.lrc_view.setSentenceEntities(lrcList);
  165.                                 // 切换带动画显示歌词
  166.                                 C_MusicPlayerActivity.lrc_view.setAnimation(AnimationUtils
  167.                                                 .loadAnimation(ControlPlay.this, R.anim.alpha_z));
  168.                                 // 启动线程
  169.                                 mHandler.post(mRunnable);
  170.                                 // /////////////////////// 初始化歌词配置 /////////////////////// //
  171.  
  172.                                 // 更换背景
  173.                                 C_MusicPlayerActivity.play_ImageButton
  174.                                                 .setBackgroundResource(R.drawable.pause_button);
  175.                                 // 启动线程更新SeekBar
  176.                                 startSeekBarUpdate();
  177.                                 // 启动更新GIF动画
  178.                                 C_MusicPlayerActivity.runEql.setFlag(true);
  179.                                 C_MusicPlayerActivity.runEql.invalidate();
  180.  
  181.                                 // 更新歌曲播放第几首
  182.                                 int x = playing_id + 1;
  183.                                 C_MusicPlayerActivity.music_number.setText("" + x + "/"
  184.                                                 + Music_infoAdapter.musicList.size());
  185.  
  186.                                 // 截取.mp3字符串
  187.                                 String a = Music_infoAdapter.musicList.get(playing_id)
  188.                                                 .getMusicName();
  189.                                 int b = a.indexOf(".mp3");
  190.                                 String c = a.substring(0, b);
  191.                                 // 切换带动画更新歌曲名
  192.                                 C_MusicPlayerActivity.music_Name.setText(c);
  193.                                 C_MusicPlayerActivity.music_Name.setAnimation(AnimationUtils
  194.                                                 .loadAnimation(ControlPlay.this, R.anim.translate_z));
  195.  
  196.                                 // 带动画更新专辑名
  197.                                 C_MusicPlayerActivity.music_Album
  198.                                                 .setText(Music_infoAdapter.musicList.get(playing_id)
  199.                                                                 .getMusicAlbum());
  200.                                 C_MusicPlayerActivity.music_Album.setAnimation(AnimationUtils
  201.                                                 .loadAnimation(ControlPlay.this, R.anim.alpha_y));
  202.  
  203.                                 // 更新歌手名
  204.                                 C_MusicPlayerActivity.music_Artist
  205.                                                 .setText(Music_infoAdapter.musicList.get(playing_id)
  206.                                                                 .getMusicSinger());
  207.  
  208.                                 // 更新歌曲时间
  209.                                 C_MusicPlayerActivity.time_right.setText(Music_infoAdapter
  210.                                                 .toTime(Music_infoAdapter.musicList.get(playing_id)
  211.                                                                 .getMusicTime()));
  212.  
  213.                                 // 获取专辑图片路径
  214.                                 String url = C_MusicPlayerActivity.music_info
  215.                                                 .getAlbumArt(Music_infoAdapter.musicList.get(
  216.                                                                 ControlPlay.playing_id).get_id());
  217.                                 if (url != null) {
  218.  
  219.                                         // 显示获取的专辑图片
  220.                                         C_MusicPlayerActivity.music_AlbumArt.setImageURI(Uri
  221.                                                         .parse(url));
  222.                                         C_MusicPlayerActivity.music_AlbumArt
  223.                                                         .setAnimation(AnimationUtils.loadAnimation(
  224.                                                                         C_MusicPlayerActivity.context,
  225.                                                                         R.anim.alpha_z));
  226.  
  227.                                         // 开启通知,传入歌曲名和艺术家及通知图标
  228.                                         C_MusicPlayerActivity.setNotice(c, c,
  229.                                                         Music_infoAdapter.musicList.get(playing_id)
  230.                                                                         .getMusicSinger(), R.drawable.notice_icon);
  231.  
  232.                                         try {
  233.                                                 /* 为倒影创建位图 */
  234.                                                 Bitmap mBitmap = BitmapFactory.decodeFile(url);
  235.                                                 C_MusicPlayerActivity.reflaction
  236.                                                                 .setImageBitmap(C_MusicPlayerActivity
  237.                                                                                 .createReflectedImage(mBitmap));
  238.                                                 C_MusicPlayerActivity.reflaction
  239.                                                                 .setAnimation(AnimationUtils.loadAnimation(
  240.                                                                                 C_MusicPlayerActivity.context,
  241.                                                                                 R.anim.alpha_z));
  242.                                         } catch (Exception e) {
  243.                                                 // TODO Auto-generated catch block
  244.                                                 e.printStackTrace();
  245.                                         }
  246.  
  247.                                 } else {
  248.                                         C_MusicPlayerActivity.music_AlbumArt
  249.                                                         .setImageResource(R.drawable.album);
  250.                                         C_MusicPlayerActivity.music_AlbumArt
  251.                                                         .setAnimation(AnimationUtils.loadAnimation(
  252.                                                                         C_MusicPlayerActivity.context,
  253.                                                                         R.anim.alpha_y));
  254.  
  255.                                         // 开启通知,传入歌曲名和艺术家及通知图标
  256.                                         C_MusicPlayerActivity.setNotice(c, c,
  257.                                                         Music_infoAdapter.musicList.get(playing_id)
  258.                                                                         .getMusicSinger(), R.drawable.notice_icon);
  259.  
  260.                                         try {
  261.                                                 /* 为倒影创建位图 */
  262.                                                 Bitmap mBitmap = ((BitmapDrawable) getResources()
  263.                                                                 .getDrawable(R.drawable.album)).getBitmap();
  264.                                                 C_MusicPlayerActivity.reflaction
  265.                                                                 .setImageBitmap(C_MusicPlayerActivity
  266.                                                                                 .createReflectedImage(mBitmap));
  267.                                                 C_MusicPlayerActivity.reflaction
  268.                                                                 .setAnimation(AnimationUtils.loadAnimation(
  269.                                                                                 C_MusicPlayerActivity.context,
  270.                                                                                 R.anim.alpha_z));
  271.                                         } catch (Exception e) {
  272.                                                 // TODO Auto-generated catch block
  273.                                                 e.printStackTrace();
  274.                                         }
  275.                                 }
  276.  
  277.                         }
  278.  
  279.                         /**
  280.                          * 监听播放是否完成
  281.                          */
  282.                         myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
  283.  
  284.                                 @Override
  285.                                 public void onCompletion(MediaPlayer mp) {
  286.                                         // TODO Auto-generated method stub
  287.  
  288.                                         // 播放完当前歌曲,自动播放下一首
  289.                                         playNext();
  290.                                 }
  291.                         });
  292.  
  293.                 } else {
  294.                         Toast.makeText(ControlPlay.this, "木有在手机里找到歌曲啊...",
  295.                                         Toast.LENGTH_SHORT).show();
  296.                 }
  297.         }
  298.  
  299.         /**
  300.          * 播放下一首
  301.          */
  302.         public void playNext() {
  303.  
  304.                 // 判断歌曲不能为空
  305.                 if (Music_infoAdapter.musicList.size() != 0) {
  306.                         // 如果到了最后一首则一直播放最后一首
  307.                         if (playing_id == Music_infoAdapter.musicList.size() - 1) {
  308.                                 playing_id = Music_infoAdapter.musicList.size() - 1;
  309.                                 Toast.makeText(ControlPlay.this, "已经是最后一首啦!",
  310.                                                 Toast.LENGTH_SHORT).show();
  311.  
  312.                                 C_MusicPlayerActivity.play_ImageButton
  313.                                                 .setBackgroundResource(R.drawable.play_button);
  314.                                 C_MusicPlayerActivity.mNotificationManager.cancel(1);
  315.  
  316.                         } else {
  317.                                 initMediaSource(initMusicUri(++playing_id));
  318.                                 playMusic();
  319.                         }
  320.                 } else {
  321.                         Toast.makeText(ControlPlay.this, "木有找到歌曲啊!", Toast.LENGTH_SHORT)
  322.                                         .show();
  323.                 }
  324.         }
  325.  
  326.         /**
  327.          * 播放上一首
  328.          */
  329.         public void playFront() {
  330.  
  331.                 // 判断歌曲不能为空
  332.                 if (Music_infoAdapter.musicList.size() != 0) {
  333.                         // 如果到了第一首则一直播放第一首
  334.                         if (playing_id == 0) {
  335.                                 playing_id = 0;
  336.                                 Toast.makeText(ControlPlay.this, "现在就是第一首哦!",
  337.                                                 Toast.LENGTH_SHORT).show();
  338.                         } else {
  339.                                 initMediaSource(initMusicUri(--playing_id));
  340.                                 playMusic();
  341.                         }
  342.                 } else {
  343.                         Toast.makeText(ControlPlay.this, "木有找到歌曲啊!", Toast.LENGTH_SHORT)
  344.                                         .show();
  345.                 }
  346.         }
  347.  
  348.         public void startSeekBarUpdate() {
  349.                 // TODO Auto-generated method stub
  350.                 handler.post(start);
  351.         }
  352.  
  353.         Runnable start = new Runnable() {
  354.  
  355.                 @Override
  356.                 public void run() {
  357.                         // TODO Auto-generated method stub
  358.  
  359.                         handler.post(updatesb);
  360.                 }
  361.  
  362.         };
  363.  
  364.         Runnable updatesb = new Runnable() {
  365.  
  366.                 @Override
  367.                 public void run() {
  368.                         // TODO Auto-generated method stub
  369.  
  370.                         // 获取SeekBar走动到那的时间
  371.                         C_MusicPlayerActivity.play_time = myMediaPlayer
  372.                                         .getCurrentPosition();
  373.  
  374.                         // 设置填充当前获取的进度
  375.                         C_MusicPlayerActivity.seekbar
  376.                                         .setProgress(C_MusicPlayerActivity.play_time);
  377.                         // SeekBar的最大值填充歌曲时间
  378.                         C_MusicPlayerActivity.seekbar.setMax(Music_infoAdapter.musicList
  379.                                         .get(playing_id).getMusicTime());
  380.  
  381.                         // 线程延迟1000毫秒启动
  382.                         handler.postDelayed(updatesb, 1000);
  383.                 }
  384.         };
  385.  
  386.         Handler mHandler = new Handler();
  387.         // 歌词滚动线程
  388.         Runnable mRunnable = new Runnable() {
  389.  
  390.                 @Override
  391.                 public void run() {
  392.                         // TODO Auto-generated method stub
  393.                         C_MusicPlayerActivity.lrc_view.SetIndex(LrcIndex());
  394.                         C_MusicPlayerActivity.lrc_view.invalidate();
  395.                         mHandler.postDelayed(mRunnable, 100);
  396.                 }
  397.         };
  398.  
  399.         /**
  400.          * 歌词同步处理类
  401.          */
  402.         public int LrcIndex() {
  403.                 if (myMediaPlayer.isPlaying()) {
  404.                         // 获得歌曲播放在哪的时间
  405.                         CurrentTime = myMediaPlayer.getCurrentPosition();
  406.                         // 获得歌曲总时间长度
  407.                         CountTime = myMediaPlayer.getDuration();
  408.                 }
  409.                 if (CurrentTime < CountTime) {
  410.  
  411.                         for (int i = 0; i < lrcList.size(); i++) {
  412.                                 if (i < lrcList.size() - 1) {
  413.                                         if (CurrentTime < lrcList.get(i).getLrc_time() && i == 0) {
  414.                                                 index = i;
  415.                                         }
  416.                                         if (CurrentTime > lrcList.get(i).getLrc_time()
  417.                                                         && CurrentTime < lrcList.get(i + 1).getLrc_time()) {
  418.                                                 index = i;
  419.                                         }
  420.                                 }
  421.                                 if (i == lrcList.size() - 1
  422.                                                 && CurrentTime > lrcList.get(i).getLrc_time()) {
  423.                                         index = i;
  424.                                 }
  425.                         }
  426.                 }
  427.                 return index;
  428.         }
  429.  
  430. }
  431.  
downloadControlPlay.java Source code - Download The Android source code for beginners music player design and source code Source code
Related Source Codes/Software:
The Android source code to use baidu weather love weather program source code - What's the weather like in this project is an andr... 2016-12-31
Textview perfect display HTML code - Textview perfect display HTML code, including cust... 2016-12-31
Eliminate to bring Android game source code list diamond little game - This project is a based on android AndEngine open ... 2016-12-31
Fast sliding Android example source code letters index and prompt contact list - A simple fast sliding contact list and initials pr... 2016-12-31
The Android source Jane. Beautiful music player development program source code - This project is an open source music player progra... 2016-12-31
skeuocard - Skeuocard progressively enhances credit card input... 2016-12-31
hubot-scripts - DEPRECATED, see https://github.com/github/hubot-sc... 2016-12-31
Jcrop - Jcrop (official) - Image Cropping Plugin for jQuer... 2016-12-31
volt - A Ruby web framework where your Ruby runs on both ... 2016-12-31
touchstonejs - Mobile App Framework powered by React ... 2016-12-31
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top