简单实现Android本地音乐播放器

发布时间 - 2026-01-11 00:56:26    点击率:

音乐播放需要调用service,在此,只是简单梳理播放流程。

public class PlayMusicService extends Service {

 //绑定服务 调用服务的方法。
 @Override
 public IBinder onBind(Intent intent) {
  return null;
 }

}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".MainActivity" >

 <EditText
  android:id="@+id/et_path"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:hint="请输入要播放文件的路径" />

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal" >

  <Button
   android:id="@+id/bt_play"
   android:onClick="play"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="播放" />
  <Button
    android:id="@+id/bt_pause"
   android:onClick="pause"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="暂停" />
  <Button
    android:id="@+id/bt_stop"
   android:onClick="stop"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="停止" />
  <Button
    android:id="@+id/bt_replay"
   android:onClick="replay"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="重播" />
 </LinearLayout>

</LinearLayout>

public class MainActivity extends Activity {
 private EditText et_path;

 private MediaPlayer mediaPlayer;

 private Button bt_play,bt_pause,bt_stop,bt_replay;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 et_path = (EditText) findViewById(R.id.et_path);
 bt_play = (Button) findViewById(R.id.bt_play);
 bt_pause = (Button) findViewById(R.id.bt_pause);
 bt_stop = (Button) findViewById(R.id.bt_stop);
 bt_replay = (Button) findViewById(R.id.bt_replay);
 }
 /**
 * 播放
 * @param view
 */
 public void play(View view) {
 String filepath = et_path.getText().toString().trim();
 File file = new File(filepath);
 if(file.exists()){
  try {
  mediaPlayer = new MediaPlayer();
  mediaPlayer.setDataSource(filepath);//设置播放的数据源。
  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  mediaPlayer.prepare();//准备开始播放 播放的逻辑是c代码在新的线程里面执行。
  mediaPlayer.start();
  bt_play.setEnabled(false);
  mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
   @Override
   public void onCompletion(MediaPlayer mp) {
   bt_play.setEnabled(true);
   }
  });
  } catch (Exception e) {
  e.printStackTrace();
  Toast.makeText(this, "播放失败", 0).show();
  }
 }else{
  Toast.makeText(this, "文件不存在,请检查文件的路径", 0).show();
 }
 }
 /**
 * 暂停
 * @param view
 */
 public void pause(View view) {
 if("继续".equals(bt_pause.getText().toString())){
  mediaPlayer.start();
  bt_pause.setText("暂停");
  return;
 }
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.pause();
  bt_pause.setText("继续");
 }
 }
 /**
 * 停止
 * @param view
 */
 public void stop(View view) {
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.stop();
  mediaPlayer.release();
  mediaPlayer = null;
 }
 bt_pause.setText("暂停");
 bt_play.setEnabled(true);
 }
 /**
 * 重播
 * @param view
 */
 public void replay(View view) {
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.seekTo(0);
 }else{
  play(view);
 }
 bt_pause.setText("暂停");
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android本地音乐播放器  # Android音乐播放器  # Android播放器  # Android实现简单音乐播放器(MediaPlayer)  # Android简易音乐播放器实现代码  # 教你轻松制作Android音乐播放器  # android暂停或停止其他音乐播放器的播放实现代码  # Android编程开发音乐播放器实例  # Android音乐播放器制作 扫描本地音乐显示在手机(一)  # android实现音乐播放器进度条效果  # Android MediaPlayer实现音乐播放器实例代码  # Android 音乐播放器的开发实例详解  # Android实现简单的音乐播放器  # 在此  # 请输入  # 不存在  # 绑定  # 大家多多  # 音乐播放  # 请检查  # MainActivity  # context  # vertical  # id  # EditText  # gt  # orientation  # tools  # res  # apk  # layout_height  # match_parent  # layout_width 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用搬瓦工VPS快速搭建个人网站?  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何在Windows服务器上快速搭建网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  中山网站制作网页,中山新生登记系统登记流程?  如何快速建站并高效导出源代码?  Android利用动画实现背景逐渐变暗  大同网页,大同瑞慈医院官网?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  JS弹性运动实现方法分析  JavaScript如何实现类型判断_typeof和instanceof有什么区别  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Python高阶函数应用_函数作为参数说明【指导】  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何基于PHP生成高效IDC网络公司建站源码?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何在自有机房高效搭建专业网站?  如何快速搭建高效香港服务器网站?  js实现点击每个li节点,都弹出其文本值及修改  JS碰撞运动实现方法详解  免费视频制作网站,更新又快又好的免费电影网站?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何快速上传建站程序避免常见错误?  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何实现数据库事务?(DB Facade示例)  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel中的withCount方法怎么高效统计关联模型数量  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在建站之星网店版论坛获取技术支持?