课程名称
基于Android平台移动互联网开发
实验日期
2016年4月22日
实验项目名称
BindService模拟通信
实验地点
S30010
实验类型
□验证型 √设计型 □综合型
学 时
一、实验目的及要求(本实验所涉及并要求掌握的知识点)
实现启动端和BindService之间的双向通信。
1)实现从启动端传递一个数据至BindService端;
2)实现使用BindService服务播放项目源文件中的音乐;
3)实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小。
4)实现在启动端通过“暂停”按钮控制音频暂停播放。
二、实验环境(本实验所使用的硬件设备和相关软件)
(1)PC机
(2)操作系统:Windows XP
(3)软件: Eclipse, JDK1.6,Android SDK,ADT
三、实验内容及步骤
1、在MusicSetting中利用绑定方式创建service
2、创建服务连接监听对象
3、创建一个继承于Service的类BindService.java并修改
4、创建动作监听
5、使用AudioManager初始化定义音量控制
6、用adjustStreamVolume方法实现音量大小调节,setStreamMute方法设置静音
四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)
代码:MusicService类代码
public class MusicSetting extends Activity {
private TextView tv2;
private Button bindbtn;
private Button getservicebtn;
private Button strongbtn;
private Button lowbtn;
private CheckBox checkBox;
private ServiceConnection connection;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.music_setting);
final AudioManager mAudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); //音量控制初始化定义
final Intent intent=new Intent(MusicSetting.this,BindService.class);
tv2=(TextView)findViewById(R.id.textView2);
//创建服务连接监听对象
connection =new ServiceConnection() {
public void onServiceDisconnected(ComponentName arg0) {
System.out.println("Service is disconnected ");
}
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
System.out.println("Service connected "); //创建连接获取IBinder
}
};
strongbtn=(Button)findViewById(R.id.strongbtn);
strongbtn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
//增加音量,调出系统音量控制
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,
AudioManager.FX_FOCUS_NAVIGATION_UP); //参数含义:声音类型,调整音量的方向,可选的标志位
tv2.setText("当前音量大小为:"+currentVolume);
}
});
lowbtn=(Button)findViewById(R.id.lowbtn);
lowbtn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,
AudioManager.FX_FOCUS_NAVIGATION_UP); //参数含义:声音类型,调整音量的方向,可选的标志位
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
tv2.setText("当前音量大小为:"+currentVolume);
}
});
checkBox=(CheckBox)findViewById(R.id.checkBox1);
checkBox.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);
}
});
}
}
BindService类代码:
public class BindService extends Service{
private int count;
private MyBinder binder=new MyBinder();
public class MyBinder extends Binder{ // 创建一个继承于Service的类BindService,在BindService类中创建一个内部类
}
public void Oncreate(){
super.onCreate();
System.out.println("Service is Created");
}
public IBinder onBind(Intent arg0) {
System.out.println("Service is Binded");
return binder;
}
}
运行结果:(截图)
单击menu菜单后显示:
单击“增大音量”后显示
单击减少音量显示:
勾选静音,再次单击“增大音量”显示:
五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)
刚开始做实验时思路很不清晰,MainActivity类、MusicSetting类、BindService类、MusicService服务之间的关系很乱,不知道在哪里创建service,不知道怎样用绑定方法创建servic,不知道在哪里创建服务连接监听对象。有些构造函数的参数也不明白是什么意思,后来认真阅读实验步骤和教案,逐步实现用BindService调节音量大小、设置静音。
实验评语
实验成绩
指导教师签名: 年 月 日
转载于:https://www.cnblogs.com/family6/p/5424074.html