在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);
                }
            }
        }
        
    }

Service Broadcast简单音乐播放功能的更多相关文章

  1. Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...

  2. Android实现简单音乐播放器(startService和bindService后台运行程序)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能有 ...

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

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

  4. Android 实现简单音乐播放器(二)

    在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...

  5. Android 实现简单音乐播放器(一)

    今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...

  6. html5 简单音乐播放器

    html5 简单音乐播放器 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...

  7. Android——简单音乐播放器

    使用MediaPlayer做的简单音乐播放器,更多内容请到百度经验查看   http://jingyan.baidu.com/article/60ccbceb63452364cab197f1.html ...

  8. Android(java)学习笔记234: 服务(service)之音乐播放器

    1.我们播放音乐,希望在后台长期运行,不希望因为内存不足等等原因,从而导致被gc回收,音乐播放终止,所以我们这里使用服务Service创建一个音乐播放器. 2.创建一个音乐播放器项目(使用服务) (1 ...

  9. 从零开始利用vue-cli搭建简单音乐网站(四)

    上一篇文章中说到这一篇博客会实现音乐播放功能,只是令我意外的是,如果利用h5的audio标签,几行代码就实现了......先来看一下最终效果吧. 这里直接用了audio标签,样式没有怎么管,能获得音乐 ...

随机推荐

  1. mac 终端查看端口命令

    查看 端口所在线程 lsof -i:8080 mac-abeen:spider abeen$ lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF ...

  2. Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术

    转自冯乐乐的 <Unity Shader 入门精要> 移动平台的特点 为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某 ...

  3. 浏览器详谈及其内部工作机制 —— web开发必读

    浏览器介绍 如今,浏览器格局基本上是五分天下,分别是:IE.Firefox.Safari.Chrome.Opera,而浏览器引擎就更加集中了,主要是四大巨头:IE的浏览器排版引擎Trident,目前随 ...

  4. SQLServer怎样把本地数据导入到远程服务器上(转载)

    平常用到mssql时间比较少,总是过一段时间就忘记应该怎么操作了.当要做mssq把本地数据导入到远程服务器的时候,就去网上搜索很久都没有图解的,所以今天自己收集一下免得下次又到处去找.希望对自己,同时 ...

  5. Vue和SuperSlide做轮播效果

    使用这个插件做轮播需要的js应该知道,就是vue.js和jquery.SuperSlide.2.1.1.js 下载地址: vue:https://vuejs.org/js/vue.js 这里直接Ctr ...

  6. ssh的server安装和安装指定版本的软件的方法

    ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...

  7. caffe修改需要的东西

    https://blog.csdn.net/zhaishengfu/article/details/51971768?locationNum=3&fps=1

  8. 利用python进行数据分析2_数据采集与操作

    txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...

  9. Lucene原理与代码分析

    http://www.cnblogs.com/forfuture1978/category/300665.html

  10. Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作 —— 查询表,返回结果为对象的list集合

    用JdbcTemplate的方法完成, 查询数据库表,把用户表sw_user所有数据以List<User>集合返回 在JdbcTemplateDemo类中增加查询返回所有对象集合的方法qu ...