项目要求
基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放、暂停、切换、进度选择、音量调整。
设计效果
(进度条时间刷新功能还没有实现)
实现思路
音乐服务端负责播放音乐和收发广播的功能。当音乐服务端作为接收器时,只能接收到主页面广播的控制消息;作为发送器时,向主页面发送歌曲信息更新的消息
主页面负责进度条以及音量按钮的监听,同时也有收发广播的功能。当主页面作为接收器时,只能接收到音乐服务端广播的歌曲信息更新的消息;作为发送器时,向音乐服务端发送对歌曲播放的控制消息。
项目结构图
主要代码
1 主页面
package com.example.dell.musicbox3;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener
{
// 获取界面中显示歌曲标题、作者文本框
TextView title, author;
// 播放/暂停、停止按钮
ImageButton play, next, last;
// 声明音量管理器
public AudioManager mAudioManager = null;
// 定义进度条
public static SeekBar audioSeekBar = null;
// 定义音量大小
public SeekBar audioVolume = null;
ActivityReceiver activityReceiver;
public static final String CTL_ACTION = "org.crazyit.action.CTL_ACTION";
public static final String UPDATE_ACTION = "org.crazyit.action.UPDATE_ACTION";
// 定义音乐的播放状态,0x11代表没有播放;0x12代表正在播放;0x13代表暂停
int status = 0x11;
String[] titleStrs = new String[] { "龙卷风", "可爱女人", "星晴" };
String[] authorStrs = new String[] { "JayChou", "JayChou", "JayChou" };
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout);
// 获取程序界面界面中的两个按钮
play = (ImageButton) this.findViewById(R.id.play);
last = (ImageButton) this.f