已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文出自:/forum.php?mod=viewthread&tid=350&page=1&extra=#pid422欢迎转载,转载请注明出自: 安卓开发网下面将和大家一起介绍一个音乐播放器项目,完成后的播放器具有暂停,下一首,前一首,歌曲列表,播放条进度等一些基本功能,它只是播放SDCARD上的.map文件,Android SDK为我们提供了一个MeidaPlayer类,有了这个类我们可以很方便的创建一个mdeiaplayer服务,该类中具有一些方法:MediaPlayer mp = new MediaPlayer(); / 设置文件存储路径setDataSource(/sdcard/path_to_song); / 播放mp.start(); / 暂短mp.pause(); / 复位mp.reset(); / 获取当前播放时长mp.getDuration(); / 进度条mp.getCurrentDuration(); / Move song to particular second - used for Forward or Backwardmp.seekTo(positon); / position in milliseconds / 检测歌曲是否正在播放mp.isPlaying(); / returns true or false1:音乐播放器的界面:播放器界面中所用的一些布局图片,这些图片大家可以到android SDK文件夹下或是到网络中去寻找一些类似就可以,并不一定要这些图片,代码才是我们的关键,3:然后我们需要写一个XML布局文件用于播放器的播按钮在不同状态下的图片,此XML文件保存在drawable文件夹下,btn_play.xml 提示:大家可以根据此XML文件完成其它的一些按钮布局文件,d 在这里就没有再为大家一一提供了,4:为了让播放器更绚,我们可以自定义一个SeekBar作为歌曲的播放进度,自定义风格代如下:(4.1)更换背景图片:seekbar_progress_bg.xml (4.2)Changing SeekBar Progress:seekbar_progress.xml (4.3)实际的Seekbar控件定义如下 :5:接下来我们将实现播放的整体界面的布局文件:player.xml 6:有了播放器的播放界面后,我们再将所有歌曲显示的界面实现了,播放器的歌曲列表用的一个listview控件,同样我们也为该listview控件自定义,适合播放的整体界面风格,list_selector.xml歌曲列表界面布局文件:playlist.xml listviewr的item界面布局,用于定义单个歌曲的显示界面:playlist_item.xml歌曲列表界面图:7:到此为止我们在上面已经完成了该项目的所有布局文件,下面我们就来实现SongManager.java类,这个类用于扫描设备中所有.mp3文件,SongsManager.mp3public class SongsManager / SDCard Path final String MEDIA_PATH = new String(/sdcard/); private ArrayListHashMap songsList = new ArrayListHashMap(); / Constructor public SongsManager() /* * Function to read all mp3 files from sdcard * and store the details in ArrayList * */ public ArrayListHashMap getPlayList() File home = new File(MEDIA_PATH); if (home.listFiles(new FileExtensionFilter().length 0) for (File file : home.listFiles(new FileExtensionFilter() HashMap song = new HashMap(); song.put(songTitle, file.getName().substring(0, (file.getName().length() - 4); song.put(songPath, file.getPath(); / Adding each song to SongList songsList.add(song); / return songs list array return songsList; /* * Class to filter files which are having .mp3 extension * */ class FileExtensionFilter implements FilenameFilter public boolean accept(File dir, String name) return (name.endsWith(.mp3) | name.endsWith(.MP3); 8:创建一个新的Activity 类,该类用于显示在ongsManager.java中扫描到的所有歌曲,PlayListActivity.javapackage com.androidhive.musicplayer; import java.util.ArrayList;import java.util.HashMap; import android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleAdapter; public class PlayListActivity extends ListActivity / Songs list public ArrayListHashMap songsList = new ArrayListHashMap(); Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.playlist); ArrayListHashMap songsListData = new ArrayListHashMap(); SongsManager plm = new SongsManager(); / get all songs from sdcard this.songsList = plm.getPlayList(); / looping through playlist for (int i = 0; i songsList.size(); i+) / creating new HashMap HashMap song = songsList.get(i); / adding HashList to ArrayList songsListData.add(song); / Adding menuItems to ListView ListAdapter adapter = new SimpleAdapter(this, songsListData, R.layout.playlist_item, new String songTitle , new int R.id.songTitle ); setListAdapter(adapter); / selecting single ListView item ListView lv = getListView(); / listening to single listitem click lv.setOnItemClickListener(new OnItemClickListener() Override public void onItemClick(AdapterView parent, View view, int position, long id) / getting listitem index int songIndex = position; / Starting new intent Intent in = new Intent(getApplicationContext(), AndroidBuildingMusicPlayerActivity.class); / Sending songIndex to PlayerActivity in.putExtra(songIndex, songIndex); setResult(100, in); / Closing PlayListView finish(); ); 9:下面我们再来实现播放的主类AndroidBuildingMusicPlayerActivity.java:该类主要实现功能如下:1:在歌曲列表界面点击一首歌曲进入播放界面;2:播放,暂停,快进,复位等功能实现3:重复播放单一歌曲,随机播放等该类的完整代码如下:public class AndroidBuildingMusicPlayerActivity extends Activity implements OnCompletionListener, SeekBar.OnSeekBarChangeListener private ImageButton btnPlay;private ImageButton btnForward;private ImageButton btnBackward;private ImageButton btnNext;private ImageButton btnPrevious;private ImageButton btnPlaylist;private ImageButton btnRepeat;private ImageButton btnShuffle;private SeekBar songProgressBar;private TextView songTitleLabel;private TextView songCurrentDurationLabel;private TextView songTotalDurationLabel;/ Media Playerprivate MediaPlayer mp;/ Handler to update UI timer, progress bar etc,.private Handler mHandler = new Handler();private SongsManager songManager;private Utilities utils;private int seekForwardTime = 5000; / 5000 millisecondsprivate int seekBackwardTime = 5000; / 5000 millisecondsprivate int currentSongIndex = 0;private boolean isShuffle = false;private boolean isRepeat = false;private ArrayListHashMap songsList = new ArrayListHashMap();Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.player);/ 所有的播放按钮btnPlay = (ImageButton) findViewById(R.id.btnPlay);btnForward = (ImageButton) findViewById(R.id.btnForward);btnBackward = (ImageButton) findViewById(R.id.btnBackward);btnNext = (ImageButton) findViewById(R.id.btnNext);btnPrevious = (ImageButton) findViewById(R.id.btnPrevious);btnPlaylist = (ImageButton) findViewById(R.id.btnPlaylist);btnRepeat = (ImageButton) findViewById(R.id.btnRepeat);btnShuffle = (ImageButton) findViewById(R.id.btnShuffle);songProgressBar = (SeekBar) findViewById(R.id.songProgressBar);songTitleLabel = (TextView) findViewById(R.id.songTitle);songCurrentDurationLabel = (TextView) findViewById(R.id.songCurrentDurationLabel);songTotalDurationLabel = (TextView) findViewById(R.id.songTotalDurationLabel);/ Mediaplayermp = new MediaPlayer();songManager = new SongsManager();utils = new Utilities();/ Listen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年护理实习生出科理论考试试题
- 代建项目基础及地下室施工施工部署
- 物业行业分析及市场前景展望
- 2023-2024学年四川大学附属中学高一数学第二学期期末学业水平测试试题含解析
- 化肥购销合同范本 标准版 模板
- 医院护士辞职合同
- 广西壮族自治区贵港市港南中学2024届数学高一下期末预测试题含解析
- 江苏省东台市第一中学2023-2024学年高一数学第二学期期末学业质量监测模拟试题含解析
- 河南省漯河市名校2024届八下物理期末质量检测试题及答案解析
- 开启升学之旅
- 花格子背心在散步
- 浦发银行批量转账模板
- 装配式建筑机电工程设计与施工课件
- 北师大版四年级数学下册导学案-优化
- 温岭市2023年六年级数学第二学期期末联考试题含解析
- 学校校园欺凌师生访谈记录表
- 机械 原理第四讲
- 非晶合金变压器环保节能产品项目安全现状评价报告
- 四川省全过程工程咨询服务合同(示范文本)
- 高中化学人教版必修一期末测试题汇总(附详细解析)
- 我也可以飞【经典绘本】
评论
0/150
提交评论