android 第三次作业

音乐播放器:

作业内容:要求制作音乐播放器,实现基本功能。

实现效果截图:

项目代码链接: https://git.coding.net/GreatDruid/1600802109_2.git

APK链接:https://git.coding.net/GreatDruid/1600802109_2_musicplayerAPK.git

项目描述:

基本还原实验要求效果,在原本老师发的代码里做了改动:

  • 实现播放/暂停,播放上一首,下一首功能(切歌功能)
  • 实现了从内存卡读取全部.mp3文件,并在界面上按字母排序显示播放列表
  • 按照老师的拓展要求实现了进度条更新、进度条的拖动以及时间线显示的更新(自学)

部分核心代码:

音乐列表:

 1     private void ListViewer() {
 2         List<File> list = new ArrayList<File>();
 3         //通过finAll()递归查询获取所有音乐并进行排序
 4         findAll(Environment.getExternalStorageDirectory(), list);
 5         Collections.sort(list);
 6  7         data = new ArrayList<Map<String, String>>();
 8         for (File file : list) {
 9             Map<String, String> map = new HashMap<String, String>();
10             map.put("name", file.getName());
11             map.put("path", file.getAbsolutePath());
12             data.add(map);
13         }
14 SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item, new String[] { "name" }, new int[] { R.id.mName }); 15 listView.setAdapter(adapter); 16 listView.setOnItemClickListener(new MyItemListener()); 17 }

切歌按键响应:

 1     public void onClick(View view) {  
 2         if (view.getId()==R.id.PreBtn) changeMusic(--CurPosi);
 3         else if (view.getId()==R.id.PlayBtn){
 4             if (Player==null) changeMusic(0);
 5             else {
 6                 if (Player.isPlaying()) Player.pause();
 7                 else Player.start();
 8             }
 9         }
10         else if (view.getId()==R.id.NextBtn) changeMusic(++CurPosi);
11     }

进度条的拖动:

 1     // 进度条的滑动更新改变
 2     public class MoveSeekBar implements SeekBar.ChangeListener {
 3         public void changeProgress(SeekBar seekBar, int progress, boolean fromUser) {
 4         }
 5         
 6         public void startTracking(SeekBar seekBar) {
 7             isSeekBarChanging = true;
 8         }
 9         //后台Timer中断,以免在滑动进度条时产生冲突
10         public void stopTracking(SeekBar seekBar) {
11             isSeekBarChanging = false;
12             mediaPlayer.seekTo(seekBar.getProgress());
13         }
14     }

更新音乐播放进程:

1     private void updateProgress() {
2         Message msg = Message.obtain();
3         int progress = Player.getCurrentPosition();
4         msg.arg1 = progress;
5         mHandler.sendMessageDelayed(msg, INTERNAL_TIME);
6     }

时间显示的更新,以及时间的格式化显示:

1     private String parseTime(int oldTime) {
2         SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
3         String newTime = sdf.format(new Date(oldTime));
4         return newTime;
5     }

 

posted @ 2018-12-11 21:51  Great-Druid  阅读(272)  评论(0编辑  收藏  举报