这些日子都在学习Android的应用开发,于是参考了Android从入门到精通里的代码(明日科技),抄抄写写做了一个简易的音乐播放器,修修改改也看了好多网上的代码,在三星盖世3上测试可以运行(关闭时会有停止运行的提示),但是在Genymotion的模拟器上无法运行,也就是闪退,还找不到原因,但是先把代码贴出来吧。。

Main.xml文件:

  1. <?xml version="1.0" encoding="utf-8"?><span style="font-family:Comic Sans MS;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="0dp"android:layout_weight="6"><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/list"android:drawSelectorOnTop="false"></ListView></LinearLayout><include layout="@layout/buttom"android:layout_weight="1"android:layout_height="0dp"android:layout_width="fill_parent"/><include layout="@layout/seek"android:layout_width="fill_parent"android:layout_height="0dp"android:layout_weight="1"/></LinearLayout></span>
    

buttom.xml文件

<span style="font-family:Comic Sans MS;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="50dp"android:orientation="horizontal"><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/Pre"android:src="@drawable/pre"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/Play"android:src="@drawable/play"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/Pause"android:src="@drawable/pause"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/Stop"android:src="@drawable/stop"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/Next"android:src="@drawable/next"/></LinearLayout></LinearLayout></span>

seek.xml文件:

<span style="font-family:Comic Sans MS;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/seekBar"android:layout_gravity="center_horizontal"/>
</LinearLayout>
</span>


MyActivity.java文件:


<span style="font-family:Comic Sans MS;">package com.example.Player;import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.widget.*;
import android.os.Handler;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class MyActivity extends Activity {private MediaPlayer mediaPlayer;private List<String>audioList=new ArrayList<String>();private int currentItem=0;private ImageButton pause;private SeekBar seekBar;@Overrideprotected void onDestroy() {if (mediaPlayer.isPlaying()){mediaPlayer.stop();}mediaPlayer.release();super.onDestroy();}/*** Called when the activity is first created.*/Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case 0:int position=mediaPlayer.getCurrentPosition();int time=mediaPlayer.getDuration();int max=seekBar.getMax();seekBar.setProgress(position*max/time);break;default:break;}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mediaPlayer=new MediaPlayer();ImageButton play=(ImageButton)findViewById(R.id.Play);ImageButton pre=(ImageButton)findViewById(R.id.Pre);ImageButton stop=(ImageButton)findViewById(R.id.Stop);ImageButton next=(ImageButton)findViewById(R.id.Next);pause= (ImageButton) findViewById(R.id.Pause);audioList();seekBar= (SeekBar) findViewById(R.id.seekBar);seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {int dest=seekBar.getProgress();int time=mediaPlayer.getDuration();int max=seekBar.getMax();mediaPlayer.seekTo(time*dest/max);}});pre.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {preMusic();}});play.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {playMusic(audioList.get(currentItem));}});pause.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mediaPlayer.isPlaying()){mediaPlayer.pause();((ImageButton) v).setImageResource(R.drawable.pause1);}else{mediaPlayer.start();((ImageButton) v).setImageResource(R.drawable.pause);}}});stop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mediaPlayer.isPlaying()){mediaPlayer.stop();}pause.setEnabled(false);}});next.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {nextMusic();}});mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {nextMusic();}});}private void audioList() {getFiles("/sdcard/kgmusic/download/");ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,audioList);ListView listView=(ListView)findViewById(R.id.list);listView.setAdapter(adapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {currentItem = position;//将当前列表的索引值赋给currentItemplayMusic(audioList.get(currentItem));}});final int milliseconds=100;new Thread(){@Overridepublic void run() {while(true){try{sleep(milliseconds);} catch (InterruptedException e) {e.printStackTrace();}handler.sendEmptyMessage(0);}}}.start();}private static String[] imageFormateSet=new String[]{"mp3","wav","3gp"};private static boolean isAudioFile(String path){for (String format:imageFormateSet){        //遍历数组if (path.contains(format)){         //判断是否为合法的音频文件return true;}}return false;}private void playMusic(String path) {try{if (mediaPlayer.isPlaying()){mediaPlayer.stop();             //停止当前音频的播放}mediaPlayer.reset();mediaPlayer.setDataSource(path);mediaPlayer.prepare();mediaPlayer.start();pause.setEnabled(true);} catch (IOException e) {e.printStackTrace();}}void nextMusic(){if (++currentItem>=audioList.size()){currentItem=0;}playMusic(audioList.get(currentItem));}void preMusic(){if (--currentItem>=0) {if (currentItem >= audioList.size()) {currentItem = 0;}} else {currentItem = audioList.size() - 1;}playMusic(audioList.get(currentItem));}private void getFiles(String url) {File files=new File(url);//创建文件对象File[] file=files.listFiles();try{for (File f:file){                  //通过for循环遍历获取到的文件数组if (f.isDirectory()){getFiles(f.getAbsolutePath());}else {if (isAudioFile(f.getPath())){      //如果是音频文件audioList.add(f.getPath());         //将文件路径添加到List集合中}}}}catch (Exception e){e.printStackTrace();            //输出异常信息}}
}</span>

Android的简易音乐播放器相关推荐

  1. Android Studio简易音乐播放器设计作业

    Android Studio简易音乐播放器设计作业 实验成功展示 实验代码 MainActivity.java XML文件 class文件 利用BroadcastReceiver模拟音乐播放器,实现播 ...

  2. android开发音乐播放器,Android开发简易音乐播放器

    这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这是代码的主要设计: 音乐主 ...

  3. 利用Broadcast及相关组件实现简易音乐播放器功能

    目录 前言 项目源码 准备工作 代码编写 页面布局 Service类的创建 主函数的编写 项目心得 前言 在Andriod Studio中使用Broadcast实现了简易音乐播放器的功能.可以进行播放 ...

  4. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

    JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...

  5. android音乐播放器案例,Android MediaPlayer实现音乐播放器实例代码

    Android MediaPlayer实现音乐播放器 1.布局文件 android:layout_width="fill_parent" android:layout_height ...

  6. 安卓java自实现mp3播放器,Android MediaPlayer实现音乐播放器实例代码

    Android MediaPlayer实现音乐播放器 1.布局文件 android:layout_width="fill_parent" android:layout_height ...

  7. [内附完整源码和文档] 基于Android的手机音乐播放器的设计与实现

    摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活节奏的加快,生活压力越来越大,碎片化的时间越来越多,那么一个可以在碎片化的时间内调节 ...

  8. html实现简易音乐播放器

    目标: 使用vue.js导包的形式做一个简单的音乐播放器,新手也很容易看懂. 内容: 1. 使用了flex实现响应式布局: 2. 使用min-width防止字体被压缩: 3. 使用computed计算 ...

  9. android音乐播放器实现,Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

最新文章

  1. CentOS下yum找不到安装软件的解决方法。
  2. python 动态类型检测 性能_4种速度最慢的动态编程语言,你一定用过
  3. insert into 插入空值_MySQL数据库的表中 NULL 和 空值 到底有什么区别呢
  4. 交大网院计算机第五次作业答案,交大网院计算机第三次作业分析.docx
  5. 地址栏地址 获取_直播源获取工具,支持斗鱼、虎牙、B站、企鹅电竞、YY、抖音、西瓜直播!...
  6. [Leedcode][JAVA][第210 题][课程表 II][拓扑排序][BFS][DFS][有向图]
  7. java实现逾期提醒_信用卡逾期后的5个阶段 你都知道吗?
  8. Spring : Spring Aop 创建代理
  9. css3价格斜切_HTML5+CSS3价格表翻转切换动画
  10. PHP中文分词的实现
  11. python软件下载安装中文版-Python3.7.6下载
  12. ASP.NET【3】--ASHX
  13. mybatis实现模糊查询时%%的处理
  14. 病历管理系统V 1.0源码分享
  15. 上位机软件需求说明书100元
  16. java nginx报502,Nginx 502错误排查及解决办法
  17. 南京邮电大学MOOC高级程序语言设计(C++)第五章编程题答案
  18. Python_pandas读取数据
  19. python竖着展示诗_十八年-python诗词动画
  20. 如何用数据找到下一家独角兽?

热门文章

  1. python 批量移动文件_[Python] 自动化办公 批量命名和移动文件
  2. TM4C USB-HID了解学习(二)
  3. 1. Python的基本数据类型-字符串
  4. python BGR 转换为 RGB
  5. 非结构化商业文本信息中隐私信息识别Baseline
  6. 赚钱 36 计 - 第十计:借道计
  7. root用户无法运行tor解决办法(The tor browser bundle should not be run as root )
  8. ESP32芯片模组技术应用,自动浇水看护盆栽,智能技术方案
  9. 各种加密算法内部原理实现
  10. 中英文混合的关系导致列没有对齐