android音乐播放器例子及其源码分析
16lz
2021-01-26
android音乐播放器例子及其源码分析
这个例子是播放音乐的一个小例子也比较简单,大家需要去下载2个.mp3结尾的歌曲,然后放到SD卡里边 进行测试,就可以看到效果了。 运行效果如下
效果图:
Java代码:
- <?xml version="1.0" encoding="utf-8"?>
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- android:id="@id/android:list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- android:drawSelectorOnTop="false"/>
- android:id="@+id/LastImageButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_x="10px"
- android:layout_y="70px"
- android:src="@drawable/last"
- />
- android:id="@+id/StopImageButton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_x="70px"
- android:layout_y="70px"
- android:src="@drawable/stop"
- />
- android:id="@+id/StartImageButton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_x="130px"
- android:layout_y="70px"
- android:src="@drawable/start"
- />
- android:id="@+id/PauseImageButton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_x="190px"
- android:layout_y="70px"
- android:src="@drawable/pause"
- />
- android:id="@+id/NextImageButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_x="250px"
- android:layout_y="70px"
- android:src="@drawable/next"
- />
musicitme.xml
Java代码:
- <?xml version="1.0" encoding="utf-8"?>
- android:id="@+id/TextView01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"/>
只有一个类 Activity1
Java代码:
- package eoe.demo;
- import java.io.File;
- import java.io.FilenameFilter;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.ListActivity;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.ImageButton;
- import android.widget.ListView;
- public class Activity01 extends ListActivity
- {
- /* 几个操作按钮 */
- private ImageButton mFrontImageButton = null;
- private ImageButton mStopImageButton = null;
- private ImageButton mStartImageButton = null;
- private ImageButton mPauseImageButton = null;
- private ImageButton mNextImageButton = null;
- /* MediaPlayer对象 */
- public MediaPlayer mMediaPlayer = null;
- /* 播放列表 */
- private List
mMusicList = new ArrayList (); - /* 当前播放歌曲的索引 */
- private int currentListItme = 0;
- /* 音乐的路径 */
- private static final String MUSIC_PATH = new String("/sdcard/");
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- /* 更新显示播放列表 */
- musicList();
- /* 构建MediaPlayer对象 */
- mMediaPlayer = new MediaPlayer();
- mFrontImageButton = (ImageButton) findViewById(R.id.LastImageButton);
- mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);
- mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton);
- mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);
- mNextImageButton = (ImageButton) findViewById(R.id.NextImageButton);
- //停止按钮
- mStopImageButton.setOnClickListener(new ImageButton.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- /* 是否正在播放 */
- if (mMediaPlayer.isPlaying())
- {
- //重置MediaPlayer到初始状态
- mMediaPlayer.reset();
- }
- }
- });
- //开始按钮
- mStartImageButton.setOnClickListener(new ImageButton.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
- }
- });
- //暂停
- mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener()
- {
- public void onClick(View view)
- {
- if (mMediaPlayer.isPlaying())
- {
- /* 暂停 */
- mMediaPlayer.pause();
- }
- else
- {
- /* 开始播放 */
- mMediaPlayer.start();
- }
- }
- });
- //下一首
- mNextImageButton.setOnClickListener(new ImageButton.OnClickListener()
- {
- @Override
- public void onClick(View arg0)
- {
- nextMusic();
- }
- });
- //上一首
- mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener()
- {
- @Override
- public void onClick(View arg0)
- {
- FrontMusic();
- }
- });
- }
- public boolean onKeyDown(int keyCode, KeyEvent event)
- {
- if ( keyCode == KeyEvent.KEYCODE_BACK)
- {
- mMediaPlayer.stop();
- mMediaPlayer.release();
- this.finish();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- /* 当我们点击列表时,播放被点击的音乐 */
- protected void onListItemClick(ListView l, View v, int position, long id)
- {
- currentListItme = position;
- playMusic(MUSIC_PATH + mMusicList.get(position));
- }
- /* 播放列表 */
- public void musicList()
- {
- //取得指定位置的文件设置显示到播放列表
- File home = new File(MUSIC_PATH);
- if (home.listFiles(new MusicFilter()).length > 0)
- {
- for (File file : home.listFiles(new MusicFilter()))
- {
- mMusicList.add(file.getName());
- }
- ArrayAdapter
musicList = new ArrayAdapter (Activity01.this,R.layout.musicitme, mMusicList); - setListAdapter(musicList);
- }
- }
- private void playMusic(String path)
- {
- try
- {
- /* 重置MediaPlayer */
- mMediaPlayer.reset();
- /* 设置要播放的文件的路径 */
- mMediaPlayer.setDataSource(path);
- /* 准备播放 */
- mMediaPlayer.prepare();
- /* 开始播放 */
- mMediaPlayer.start();
- mMediaPlayer.setOnCompletionListener(new OnCompletionListener()
- {
- public void onCompletion(MediaPlayer arg0)
- {
- //播放完成一首之后进行下一首
- nextMusic();
- }
- });
- }catch (IOException e){}
- }
- /* 下一首 */
- private void nextMusic()
- {
- if (++currentListItme >= mMusicList.size())
- {
- currentListItme = 0;
- }
- else
- {
- playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
- }
- }
- /* 上一首 */
- private void FrontMusic()
- {
- if (--currentListItme >= 0)
- {
- currentListItme = mMusicList.size();
- }
- else
- {
- playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
- }
- }
- }
- /* 过滤文件类型 */
- class MusicFilter implements FilenameFilter
- {
- public boolean accept(File dir, String name)
- {
- //这里还可以设置其他格式的音乐文件
- return (name.endsWith(".mp3"));
- }
- }
成为Android高手必须掌握的28大项内容和10个建议
安卓Android和Java语言的异同、关系和区别
高校应届毕业生“IT业”收入最高,Android技术最热门
贡献15本pdf完整版经典Android教程和海量Android源码
71道经典Android面试题和答案--重要知识点都涉及到了
Android App应用开发者年终总结--日均200元的广告收入
成为Java高手的25个学习目标--非常经典
成为“Android高手”需要经过的六个阶段和6个境界
Android中设置146种颜色相对应的xml值
Android SDK 目录和作用的分析详解
Android中拍照、图片、录音、视频和音频功能的方法和代码
老程序员的忠告:不要做浮躁的软件工程师
为程序开发人员量身定制的12个目标
2011年3月最新“211工程”大学名单(共112所)
技术开发人员为什么会无奈苦逼?
印度和中国程序员的区别
更多相关文章
- Android(安卓)Studio报错:unable to find valid certification pa
- Android让手机主动亮屏的代码
- 如何在代码中动态设置字体大小
- Android笔记使用Jsoup解析Html
- Android(安卓)opengl es 2.0怎么学习
- Android控件(View)之TextView, Button, ImageButton, ImageView,
- Android(安卓)Widget开发案例(伦敦奥运会倒计时!)
- Android之VideoView播放视频
- Android(安卓)Studio(二):基本配置