实验7 BindService模拟通信
实验报告
课程名称 |
基于Android平台移动互联网开发 |
实验日期 |
2015年4月27日 |
||
实验项目名称 |
BindService模拟通信 |
实验地点 |
S30010 |
||
实验类型 |
□验证型 √设计型 □综合型 |
学 时 |
2 |
||
一、实验目的及要求(本实验所涉及并要求掌握的知识点) |
|||||
【目的】 实现启动端和BindService之间的双向通信 【要求】 1) 实现从启动端传递一个数据至BindService端; 2) 实现使用BindService服务播放项目源文件中的音乐; 3) 实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小。 4) 实现在启动端通过“暂停”按钮控制音频暂停播放。 |
|||||
二、实验环境(本实验所使用的硬件设备和相关软件) |
|||||
(1)PC机 (2)操作系统:Windows XP (3)软件: Eclipse, JDK1.6,Android SDK,ADT |
|||||
三、实验内容及步骤 |
|||||
1、先创建BindService,使用audiomanager来控制音量 2、在MainActivity中调用IBinder绑定BindService实现数独游戏背景音乐的自动播放 |
|||||
四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)
|
|||||
代码: Bindservice主要代码 import android.app.Service; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Binder; import android.os.IBinder;
public class BindService extends Service { private MediaPlayer mediaPlayerBS = new MediaPlayer(); private BinderMusic binder = new BinderMusic(); AudioManager audiomanage;
boolean isSilent = false;
public void setsilent(boolean isSilent) { if (isSilent) { audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); } else { audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, 1000, 1000); }
}
public void setvolum(int setting) { audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, setting, 100);
} private int Volum = 0;
public int getVolum() { return Volum;
}
public int setVolum() { return 0;
} @Override public void onCreate() { // TODO Auto-generated method stub
mediaPlayerBS = MediaPlayer.create(BindService.this, R.raw.nan); // mediaPlayer2.start(); mediaPlayerBS.start(); audiomanage = (AudioManager) getSystemService(Context.AUDIO_SERVICE); super.onCreate(); }
@Override public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub System.out.println("Service is Unbinded"); return super.onUnbind(intent);
}
@Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mediaPlayerBS.isPlaying()) { mediaPlayerBS.stop(); mediaPlayerBS.release(); } }
public class BinderMusic extends Binder { public BindService getBindService() { return BindService.this;
} }
@Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub
return binder; }
};
IBinder绑定服务部分代码 private ServiceConnection conn=new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub System.out.println("Service is disconnected"); } @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { // TODO Auto-generated method stub System.out.println("Service Connected"); binder=(BinderMusic) arg1; //Toast.makeText(MainActivity.this, String.valueOf(binder.getVolum()), Toast.LENGTH_LONG).show(); //创建连接获取IBinder } 运行结果:(截图)
|
|||||
五、实验总结(对本实验结果进行分析,实验心得体会及改进意见) |
|||||
1、本次实验基本上实现了BindService的部分通信,能够播放背景音乐,但还有待完善,特别是音量控件的监听事件机制不够了解 2、要继续温顾和理解关于服务类的使用方法,以及音量控制控件的使用。 |
|||||
实验评语 |
|
||||
实验成绩 |
|
指导教师签名: 年 月 日 |