在Android平台下,要实现声音的播放是十分容易实现的,只要生成一个MediaPlayer对象,并调用它的相关方法,就能改变对声音播放进行控制。MediaPlayer对象有一下各种状态:

熟悉了MediaPlayer对象的各种状态后以及转换条件,就能很好的控制媒体播放。

例如:播放res/raw文件夹中的歌曲十分简单,只需写如下代码:

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
 
   也可以指定音乐文件的位置来进行播放,例如,在sdcard根目录下有有一首歌曲:test.mp3。则可以这样播放:
        MediaPlayer mp = new MediaPlayer();
        String song = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.mp3";
        try {
            mp.setDataSource(song);
            mp.prepare();
            mp.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

建议在播放音乐的时候把MediaPlayer放在Service中,因为如果放在Activity中会使得界面特别卡。而且音乐不能放到后台里播放,一旦退出Activity,音乐就会暂停播放。

可以在Activity中布局相关的界面,例如按钮等。然后通过这个Activitiy来启动这个Service。要通过UI与Service交互,可以通过Intent对象传递消息。更复杂一些,要实现Service向Activity发送消息,并利用这些消息来更新UI,这可以用广播机制,例如告诉Activity是否正在播放,播放进度,当前播放歌曲条目等信息。

例如以下实例代码:

/*Activity中*/

 @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        btnPlay = (Button)findViewById(R.id.btnPlay);

        btnPause = (Button)findViewById(R.id.btnPause);

        btnPlay.setOnClickListener(new OnClickListener() {

            

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this,SoundService.class);

                intent.putExtra("playing", true);

                startService(intent);

            }

        });

        

        btnPause.setOnClickListener(new OnClickListener() {

            

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this,SoundService.class);

                intent.putExtra("playing", false);

                startService(intent);

            }

        });

    }

}

播放音乐的Service代码:

package com.yzy.sound;
 
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
 
public class SoundService extends Service {
    private MediaPlayer mp;
 
    @Override
    public void onCreate() {
        super.onCreate();
        mp = MediaPlayer.create(this, R.raw.test);
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        mp.release();
        stopSelf();
    }
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        boolean playing = intent.getBooleanExtra("playing", false);
        if (playing) {
            mp.start();
        } else {
            mp.pause();
        }
        return super.onStartCommand(intent, flags, startId);
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
}

Android中的音乐播放相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览

    基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览 首先这也是学习过程中开发的一个练手项目,基于百度音乐Api,api在网上搜的,如果想看他的实现,可以下载我的项目来参考.风格 ...

  7. Android端本地音乐播放器(一)---前言

    前言: 2018时的记录:大概一周多以前(现在是2018.11.26   15:24)android平台开发的课程结束了,要写大作业,最后决定写这个音乐播放器,因为老师在课堂上讲的例子也是这个,前面的 ...

  8. 张利国,龚海平,王植萌.android移动开发入门与进阶,开题报告-基于Android的手机音乐播放器的设计与实现.doc...

    盐城师范学院 毕业设计开题报告 题 目: 基于android的手机音乐播放器 的设计与实现 姓 名: 二级学院: 信息工程学院 专 业: 软件工程 班 级: 12(1) 学 号: 指导教师: 职称: ...

  9. 基于Android的手机音乐播放器的设计与实现

    源码及论文下载:http://www.byamd.xyz/tag/android/ 摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活 ...

最新文章

  1. perl开发环境配置(Database,SOCKET,CISCO)j(ReShip)
  2. Vue之动态class写法总结
  3. duilib 自带树形控件的认识
  4. web后端开发学习路线_学习后端Web开发的最佳方法
  5. cocos2d-x 2.2 创建项目
  6. 一步步编写操作系统 33 利用bios中断0x15子功能0xe820获取内存
  7. python web开发 jQuery基础
  8. 360手柄摇杆漂移修复_彻底解决你的Switch手柄摇杆问题,最省钱的完美修复。
  9. SQL分页查询的写法总结-MySQL、SQL Server、Oracle
  10. dwm1000 用c语言控制,DWM1000 测距原理简单分析(示例代码)
  11. NeurIPS 2021 | 医学图像GAN生成,在Noisy Data上训练出超越监督学习的模型
  12. 怎么避开平台多ip检测
  13. SDCC编译器学习旅之一
  14. 黑苹果显卡加速_黑苹果AMD RX5700XT定制FBname 提升显卡性能
  15. 小票打印机ESC/POS命令集
  16. Installation and use of OpenWrt (x86) | Hardware
  17. jzoj(senior)4208. 【五校联考1day1】线段树什么的最讨厌了
  18. cm-14.1 Android系统启动过程分析(8)-应用程序进程启动过程
  19. 修复树莓派鼠标移动缓慢迟滞问题
  20. unbound部署DNS

热门文章

  1. 硬盘安装RHEL方法
  2. DM 源码阅读系列文章(二)整体架构介绍
  3. 共享单车开启混战模式,谁能笑到最后?
  4. MySQL数据类型:UNSIGNED注意事项
  5. 批量将图片保存到模拟器
  6. poj 1988(并查集)
  7. 使用 JIRA 4.0 + Greenhopper 4.0 进行项目状态跟踪(转)
  8. java之hiberante之集合映射之list映射
  9. 启动celery后执行任务报错:django.core.exceptions.ImproperlyConfigured
  10. 初学python之路-day18