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

实验7 BindService模拟通信

【目的】

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

【要求】

1)   实现从启动端传递一个数据至BindService端;

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

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

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

 

【原理】

  1. 参考教案,理解BindService和启动端的通信原理
  2. AudioManager的理解

AudioManager类位于android.Media 包中,该类提供访问控制音量和铃声模式的操作。

通过getSystemService(Context.AUDIO_SERVICE)方法获得AudioManager实例对象。

AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

audiomanager就是我们定义的控制系统声音的对象。

几个比较常用到的方法:

1)        adjustVolume(int direction, int flags):用来控制手机音量大小,当传入的第一个参数为AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入AudioManager.ADJUST_RAISE时,则可以将音量调大一个单位。

2)        adjustStreamVolume(intstreamType, int direction, intflags):(以步长)调节手机音量大小

参数1:声音类型,可取为STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(音乐)、STREAM_ALARM(闹铃声)

参数2:调整音量的方向,可取ADJUST_LOWER(降低)、ADJUST_RAISE(升高)、ADJUST_SAME
参数3:可选的标志位

3)        setStreamVolume(intstreamType, int index, intflags):直接设置音量大小

4)        getStreamVolume(intstreamType):取得当前手机的音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动模式”。

5)        setStreamMute(intstreamType, boolean state):设置静音

 

部分参考代码:

//音量控制,初始化定义

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

以一步步长控制音量的增减,并弹出系统默认音量控制条:

//降低音量,调出系统音量控制

if(flag ==0){

mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,

AudioManager.FX_FOCUS_NAVIGATION_UP);

}

//增加音量,调出系统音量控制

elseif(flag ==1){

mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,

AudioManager.FX_FOCUS_NAVIGATION_UP);

}

 

其他常用方法:

android audioManager获取音量:

先获取AudioManager实例,
AudioManagermAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

//通话音量

int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ); 

int current = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL ); 

//系统音量

int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM ); 

//铃声音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_RING ); 

//音乐音量

max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC ); 

 

//提示声音音量

max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM ); 

//最大音量

intmaxVolume =mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

//当前音量

intcurrentVolume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

//直接控制音量的多少:

 

 

 

 

if(isSilent){

mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);

}else{

mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume,0);//tempVolume:音量绝对值

}

 

实验报告要求

1)     详细写出自己所做实验的步骤和内容;

2)     详细记录实验过程中发现的问题以及解决问题的方法;

3)     给出程序运行过程中各个页面的截图;

4)     提交文件包括:实验报告、源代码、可运行的安装程序,所有文件打包压缩;

5)     压缩包命名格式:专业+学号+姓名+实验7.rar

 

posted @ 2016-04-29 08:07  wilsonlee020  阅读(246)  评论(26编辑  收藏  举报