实验七 BindService模拟通信

实验报告


课程名称


基于Android平台移动互联网开发


实验日期


2016年4月22日


实验项目名称


BindService模拟通信


实验地点


S30010


实验类型


□验证型    √设计型    □综合型


学  时


2


一、实验目的及要求(本实验所涉及并要求掌握的知识点)


1. 实现启动端和BindService之间的双向通信;

2. 实现从启动端传递一个数据至BindService端;

3. 实现使用BindService服务播放项目源文件中的音乐;

4. 实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小;

5. 实现在启动端通过“暂停”按钮控制音频暂停播放。


二、实验环境(本实验所使用的硬件设备和相关软件)


(1)PC机

(2)操作系统:Windows XP

(3)软件: Eclipse, JDK1.6,Android SDK,ADT


三、实验内容及步骤


1.新建一个名为MusicVolumeControl的工程;

2.分别新建两个名为BServiceMusic和MusicSetting的java文件,并在其中写相关代码;

3.新建一个名为musicsetting的xml文件,并将之与MusicSetting.java文件相关联,在其中完善代码;

4.在AndroidManifest.xml中添加一对标签。


四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)


代码:

MainActivity.java中:

public class MainActivity extends Activity {

private MediaPlayer mediaPlayer=new MediaPlayer();

private TextView tView;

private BServiceMusic.MyBinder binder;

private int musicVolume;

private Button startBtn,pauseBtn,exitBtn;

private ServiceConnection connection=new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName arg0) {

// TODO Auto-generated method stub

}

@Override

public void onServiceConnected(ComponentName arg0, IBinder arg1) {

// TODO Auto-generated method stub

binder=(BServiceMusic.MyBinder)arg1;

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tView=(TextView)findViewById(R.id.textView1);

startBtn=(Button)findViewById(R.id.startBtn);

pauseBtn=(Button)findViewById(R.id.pauseBtn);

exitBtn=(Button)findViewById(R.id.exitBtn);

Intent intent1=new Intent(MainActivity.this,BServiceMusic.class);

bindService(intent1, connection, Service.BIND_AUTO_CREATE);

final Intent intent=getIntent();

startBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

mediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.nan);

mediaPlayer.start();

}

});

pauseBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

if(mediaPlayer.isPlaying()){

mediaPlayer.pause();

}else{

mediaPlayer.start();

}

}

});

exitBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

if(mediaPlayer.isPlaying()){

mediaPlayer.release();

}

}

});

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

if(mediaPlayer.isPlaying()){

mediaPlayer.stop();

}

mediaPlayer.release();

super.onDestroy();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

switch (item.getItemId()){

case R.id.item1:

musicVolume=binder.getVolume();

Intent intent=new Intent(MainActivity.this,MusicSetting.class);

Bundle bundle=new Bundle();

bundle.putInt("musicVolume", musicVolume);

intent.putExtras(bundle);

startActivity(intent);

finish();

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}

}

BServiceMusic.java中:

public class BServiceMusic extends Service{

private MediaPlayer mediaPlayer;

private AudioManager audioManager;

private MyBinder binder=new MyBinder();

public class MyBinder extends Binder{

public int getVolume(){

return audioManager.getStreamVolume(audioManager.STREAM_MUSIC);

}

}

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);

mediaPlayer=MediaPlayer.create(this, R.raw.nan);

mediaPlayer.start();

}

}

MusicSetting.java中:

public class MusicSetting extends Activity{

private ProgressBar musicBar;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.musicsetting);

musicBar=(ProgressBar)findViewById(R.id.progressBar1);

Bundle bundle=new Bundle();

bundle=getIntent().getExtras();

musicBar.setProgress(bundle.getInt("musicVolume"));

}

}

运行结果:(截图)

初始界面:

减小音量:

增大音量:


五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)


这个实验不是在数独游戏的基础上完成的,而是重新新建一个工程,再在其中添加代码,实现控制音量变化的目的。实验过程很困难,参考老师代码完成。


实验评语


 


实验成绩


 


指导教师签名:              年   月   日

时间: 2024-10-05 06:43:56

实验七 BindService模拟通信的相关文章

【安卓】实验7 BindService模拟通信

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016.4.30 实验项目名称 实验7 BindService模拟通信 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 学  时 2学时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 目的:实现启动端和BindService之间的双向通信 要求:1.实现从启动端传递一个数据至BindService端: 2.实现使用BindService服务播放项目源文件中的音乐: 3.实现在启动端通过“增加

【Android】实验7 BindService模拟通信 截止提交日期2016.5.3

实验7 BindService模拟通信 [目的] 实现启动端和BindService之间的双向通信 [要求] 1)   实现从启动端传递一个数据至BindService端: 2)   实现使用BindService服务播放项目源文件中的音乐: 3)   实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小. 4)   实现在启动端通过“暂停”按钮控制音频暂停播放. [原理] 参考教案,理解BindService和启动端的通信原理 AudioManager的理解 AudioManager类位

实验7 BindService 模拟通信

课程名称 基于Android平台移动互联网开发 实验日期 2016-5-2 实验项目名称 BindService模拟通信 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 1)   实现从启动端传递一个数据至BindService端: 2)   实现使用BindService服务播放项目源文件中的音乐: 3)   实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小. 4)   实现在启动端通过“暂停”

实验7 BindService模拟通信

[目的] 实现启动端和BindService之间的双向通信 [要求] 1) 实现从启动端传递一个数据至BindService端: 2) 实现使用BindService服务播放项目源文件中的音乐: 3) 实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小. 4) 实现在启动端通过“暂停”按钮控制音频暂停播放. [实验环境] 1)PC机 2)操作系统:Windows XP 3)软件: Eclipse, JDK1.6,Android SDK,ADT [实验内容及步骤] 1)设计好音乐设置的xm

CCNP实验七:修改OSPF特定路由条目的管理距离

一:基本配置 r1(config)#router ospf 1 r1(config-router)#net 1.1.0.0 0.0.255.255 area 1 r1(config-router)#net 12.1.1.1 0.0.0.0 area 0 r1(config-router)#redistribute connected subnets r2(config)#router ospf 1 r2(config-router)#net 12.1.1.2 0.0.0.0 area 0 r2(

实验七 路由器的基本配置

实验七 路由器的基本配置 一.实验目标 掌握路由器几种常用配置方法: 掌握采用Console线缆配置路由器的方法: 掌握采用Telnet方式配置路由器的方法: 熟悉路由器不同的命令行操作模式以及各种模式之间的切换: 掌握路由器的基本配置命令: 二.实验背景 1. 你是某公司新进的网管,公司要求你熟悉网络产品,首先要求你登录路由器,了解.掌握路由器的命令行操作: 2. 作为网络管理员,你第一次在设备机房对路由器进行了初次配置后,希望以后在办公室或出差时也可以对设备进行远程管理,现要在路由器上做适当

        CCNA实验七 跨交换机间的vlan  

CCNA实验七 跨交换机间的vlan 环境:Windows XP  GNS3.0.7    VPCS.exe 目的:配置跨交换机间的vlan通信 说明:使跨交换机间的vlan通信,必须把连接两个交换机的链路配置成trunk(中继),这样能使两台实现了vlan的设备之间创建链路时节省端口,让一条链路就能承载多个vlan. 步骤: 拓扑如下: 1.首先为SW1和SW2添加交换模块:方法:右键SW1单击"配置"---"单击"SW1"---"插槽&quo

Packet Tracer 5.0实验(七) 路由器单臂路由配置

Packet Tracer 5.0实验(七) 路由器单臂路由配置 一.实验目标 掌握单臂路由配置方法: 通过单臂路由实现不同VLAN间互相通信: 二.实验背景 某企业有两个主要部门:技术部和销售部,分处于不同的办公室,为了安全和便于管理,对两个 部门的主机进行了VLAN的划分,技术部和销售部分处于不同的VLAN.现由于业务的需求,需要销售部和技术部的主机能够相互访问,获得相应的资源,两个 部门的交换机通过一台路由器进行了连接. 三.技术原理 单臂路由:是为实现VLAN间通信的三层网络设备路由器,

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验七:PS/2模块① — 键盘

实验七:PS/2模块① — 键盘 实验七依然也是熟烂的PS/2键盘.相较<建模篇>的PS/2键盘实验,实验七实除了实现基本的驱动以外,我们还要深入解PS/2时序,还有PS/2键盘的行为.不过,为了节省珍贵的页数,怒笔者不再重复有关PS/2的基础内容,那些不晓得的读者请复习<建模篇>或者自行谷歌一下. 市场上常见的键盘都是应用第二套扫描码,各种扫描码如图7.2所示.<建模篇>之际,笔者也只是擦边一下PS/2键盘,简单读取单字节通码与断码而已.所谓单字节通码,就是有效的按下