实验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、要继续温顾和理解关于服务类的使用方法,以及音量控制控件的使用。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

posted @ 2016-05-03 09:16  17蔡利聪  阅读(221)  评论(0编辑  收藏  举报