在Activity上有两个ImageButton,分别控制播放/暂停、停止。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        start = (ImageButton) findViewById(R.id.play);
        stop = (ImageButton) findViewById(R.id.stop);
        start.setOnClickListener(this);
        stop.setOnClickListener(this);
        activityReceiver = new ActivityReceiver();//广播接收器,主要负责播放/暂停按钮图标的变换
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.sunny.update");
       registerReceiver(activityReceiver, filter);
        Intent intent = new Intent(this, MyService.class);//启动服务,音乐的播放用Service控制,不会因Activity退出而停止
        startService(intent);
    }

其中ActivityReceiver 如下,主要负责播放/暂停按钮图标的变换,过滤接收Action为com.sunny.update的Intent:

public class ActivityReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            int update=intent.getIntExtra("update", -1);
            switch(update){
            case 1:
                status=1;
                break;
            case 2:
                start.setImageResource(R.drawable.pause);
                status=2;
                break;
            case 3:
                start.setImageResource(R.drawable.play);
                status=3;
                break;
            }
        }
    }

为两个按钮注册时间,发送Action为com.sunny.control的广播控制音乐播放,由Service中的广播接收器接收:

public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = new Intent("com.sunny.control");
        switch (v.getId()) {
        case R.id.play:
           intent.putExtra("ACTION", 1);
            sendBroadcast(intent);
            break;
        case R.id.stop:
            intent.putExtra("ACTION", 2);
            sendBroadcast(intent);
            break;
        }
    }

在MyService中,启动时的onCreate()方法:

public void onCreate() {
        // TODO Auto-generated method stub
        status=1;//当前状态,1 没有声音 2正在播放 3 暂停
        serviceReceiver=new ServiceReceiver();//广播接收器,控制音乐播放
        IntentFilter filter=new IntentFilter();
        filter.addAction("com.sunny.control");
        registerReceiver(serviceReceiver, filter);
        super.onCreate();
    }

其中广播接收器ServiceReceiver 如下:

class ServiceReceiver extends BroadcastReceiver{

@Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
           int action=intent.getIntExtra("ACTION", -1);//过滤Intent Action为com.sunny.control的广播,根据ACTION参数控制
            switch(action){
            case 1:
                if(status==1){//在正在播放状态下
                    mp=MediaPlayer.create(context, R.raw.intro);
                    status=2;
                    Intent sendIntent=new Intent("com.sunny.update");
                    sendIntent.putExtra("update", 2);
                    sendBroadcast(sendIntent);
                    mp.start();
                }
                else if(status==2){//在暂停状态下
                    mp.pause();
                    status=3;
                    Intent sendIntent=new Intent("com.sunny.update");
                    sendIntent.putExtra("update",3);
                    sendBroadcast(sendIntent);
                }else if(status==3){//在暂停后重新播放状态下
                    mp.start();
                    status=2;
                    Intent sendIntent=new Intent("com.sunny.update");
                    sendIntent.putExtra("update", 2);
                    sendBroadcast(sendIntent);
                
                }
                break;
            case 2:
                if(status==2||status==3){
                    mp.stop();
                    status=1;
                    Intent sendIntent=new Intent("com.sunny.update");
                    sendIntent.putExtra("update",1);
                    sendBroadcast(sendIntent);
                }
            }
        }
        
    }

转载于:https://www.cnblogs.com/yechanglv/p/6922945.html

Service Broadcast简单音乐播放功能相关推荐

  1. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  2. android调用系统音频播放器,Android使用Service实现简单音乐播放实例

    Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行. Androi ...

  3. 利用Service实现简单的音乐播放功能

    1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击"停止播放"关闭服务,音乐停止播放.) 2.核心代码: MusicServic ...

  4. Java 简单拼图游戏(实现音乐播放功能)

    此程序为用JAVA编写的拼图小游戏,可通过简单的图片移动实现拼图,并实现音乐播放功能.(此程序只完成简单功能的实现,大佬勿喷) 程序源码下载:点击下载程序源码 软件系统实现 拼图主体为一方形区域,位于 ...

  5. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)

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

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

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

  7. android音乐播放器完整教程,android实现简单音乐播放器

    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已.因为我们Andoird课程要求写一个音乐播放器.所以就有了此项 ...

  8. iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)

    代码地址如下: http://www.demodashi.com/demo/11944.html 天道酬勤 前言 作为一名iOS开发者,每当使用APP的时候,总难免会情不自禁的去想想,这个怎么做的?该 ...

  9. android Service 的简单使用

    android Service 的简单使用 1.要使用Service,首先就是在配置文件里吗添加Service,如果不填加,你的Service是不能够使用的.目前学到的方法有两种 方法一:<se ...

  10. android在线音乐播放器教程,android实现简单音乐播放器

    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已.因为我们Andoird课程要求写一个音乐播放器.所以就有了此项 ...

最新文章

  1. python实例化是什么意思_类实例化和python中的’self’
  2. 【转】修改版WinXP集体歇业避免遭遇调查
  3. VC++6.0中不兼容问题
  4. playbook编写分布式lnmp
  5. Struts 1高级应用
  6. 建立远程ftp服务器,利用无线路由器建立FTP服务器
  7. vue定义对象变量并合并成新的对象
  8. 怎么恢复php格式关联,SCN与数据恢复关联
  9. android file transfer下载_PHP通过header方式下载文件
  10. 用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作
  11. [转]Servlet 3.0 新特性详解
  12. mysql几搜索引擎_详细介绍基于MySQL的搜索引擎MySQL-Fullltext
  13. 通信系统仿真2-蒙特卡洛方法
  14. 人工智能7大关键技术,终于有人讲明白了
  15. [2019CCPC秦皇岛] G Game on Chessboard 状压dp
  16. Altium Designer之泪点和常规铺铜操作笔记
  17. 网站地图怎么做?dedecms网站地图制作方法
  18. 漫画 |《帝都程序猿十二时辰》
  19. 揭秘京东文件系统JFS的前世今生,支持双11每秒约10万个对象同时读写
  20. app毕业设计 基于uni-app框架商城app、图书商城app毕设题目课题选题作品(2)后台管理功能

热门文章

  1. 浅析单调递增子序列问题(LIS)
  2. 【2015沈阳区域赛F=HDU5514】Frogs(圆上n个青蛙跳统计跳劲哪些点---欧拉函数求和+思维)
  3. 【2019牛客多校第七场:H】Pair(数位dp)
  4. T(n) = 25T(n/5)+n^2的时间复杂度?
  5. win7系统老是弹窗怎么解决_教你win7电脑右下角老是弹出广告的三种解决办法
  6. java 包装类详解_解析包装类
  7. OpenCV : 仿射变换
  8. DL-C1-week3-1(build a neural network with one hidden layer)多层感知机的简单实现
  9. Google Code Review 浏览评论中的CL
  10. 2021-08-24fine-tuning 模型