Android使用广播与服务实现音乐播放器

本文介绍了一个使用Android广播和Service实现的音乐播放器项目,详细讲述了项目要求、演示效果、项目结构和实现思路。在实现过程中,MainActivity通过发送广播控制MusicService进行播放、暂停、切换等操作,同时Service在播放时会反馈当前歌曲信息。关键代码包括MainActivity.java和MusicService.java,所有代码托管在码云MyMusicBox仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目要求

  • 使用broadcast和service实现音乐播放、暂停、切换
  • 播放时能显示歌曲名与歌手名

演示效果

音乐播放器演示

项目结构

在这里插入图片描述

实现思路

  • MainActivity启动服务,将播放、暂停、停止、切换信号发送广播给Service
  • MusicService 调用函数Prepareandplay()播放音乐,发送广播给MainActivity返回歌曲id
  • PrepareAndPlay() 定向操作 打开并播放音乐文件

记录

  • assets相比res管理更松散,可以定义下级子文件夹,且assets中的资源不占用APK空间
  • 原来是BroadcastReceiver,现在在Activity里,创建一个ActivityReceiver子类来代替其功能
  • BroadcastReceiver可以接收来自系统和应用的的广播,但来自系统的广播不用我们人为发送

主要代码

MainActivity.java

public class MainActivity extends Activity implements View.OnClickListener {
   

    TextView title, author;
    ImageButton play, stop,last,next;

    ActivityReceiver activityReceiver;

    public static final String CTL_ACTION=
            "org.crazyit.action.CTL_ACTION";
    public static final String UPDATE_ACTION=
            "org.crazyit.action.UPDATE_ACTION";
    int status = 0x11;
    String[] titleStrs = new String[] {
   "Take Me Home Country Roads","好想爱这个世界啊","You Are Not Alone","七里香"};
    String[] authorStrs = new String[] {
   "John Denver","华晨宇","Michael Jackson","周杰伦"};



    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activityReceiver = new ActivityReceiver();
        IntentFilter filter = new IntentFilter();
        //指定BroadCastReceiver监听的action
        filter.addAction(UPDATE_ACTION);
        registerReceiver(activityReceiver,filter);
        Intent intent = new Intent(this,MusicService.class);

        startService(intent);

        //找到对应控件
        play = this.findViewById(R.id.imgplay);
        stop = this.findViewById(R.id.imgstop);
        next = this.findViewById(R.id.imgnext);
        last = this.findViewById(R.id.imglast);
        title = this.findViewById(R.id.txttitle);
        author = this.findViewById(R.id.txtauthor);
        //添加监听
        play.setOnClickListener(this);
        st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值