实验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

【Android】实验7 BindService模拟通信 截止提交日期2016.5.3的更多相关文章

  1. 实验7 BindService模拟通信

    实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016.4.16 实验项目名称 BindService模拟通信 实验地点 S30010 实验类型 □验证型    √设计型    ...

  2. Android开发之bindService()侦听service内部状态

    在Android开发之bindService()通信的基础上,实现bindService()方法侦听service内部状态. 实现侦听service内部状态,使用的是回调机制 1.首先实现一个接口 p ...

  3. Android实验报告

    实验名称:Android程序设计 实验时间:2017.5.24 实验人员:20162309邢天岳(结对同学20162313苑洪铭) 实验目的:使用android stuidio开发工具进行基本安卓软件 ...

  4. 【Android】实验3 颜色、字符串资源的使用【提交截止时间:2016.4.1】

    实验4 颜色.字符串资源的使用 [目的] 掌握Android中颜色和字符串资源的使用方法. 理解Android中尺寸和布局资源的使用方法. [要求] 在工程中为Activity.View使用颜色资源: ...

  5. 【Android】实验6 在应用程序中播放音频和视频 截止提交报告时间2016.4.21

    注:也可以在数独游戏项目中完成该实验的内容.

  6. Android开发UI之EditText+DatePicker带日期选择器的编辑框

    1. 声明EditText变量,并关联到相应控件上 private EditText sellStartTime; private EditText sellEndTime; sellStartTim ...

  7. Android实验一(在Android Studio中创建项目和模拟器)

    北京电子科技学院(BESTI) 实     验    报     告 课程:移动平台开发         班级:1592 姓名:苏泽楠 学号:20159207 成绩:             指导教师 ...

  8. 不一样的Android选择器,简单方便,地址日期时间都好用!

    前言 Android开发有不少情况下会用到Picker,例如选择 地址.日期.时间. 原生Picker和仿iOS的Picker都是上下或左右滑动到固定区域来选择选项: 显示数量少,如果当前选项距离需要 ...

  9. android 76 使用get post方式提交数据

    get方式: package com.itheima.getmethod; import java.io.InputStream; import java.net.HttpURLConnection; ...

随机推荐

  1. 《JavaScript高级程序设计第三版》——细碎知识痛点整理(第六章)

    面向对象的程序设计 对象是一组没有特定顺序的值6.1.1 属性类型ECMAScript中有两种属性:数据属性和访问器属性.1. 数据属性Configurable 表示能否通过delete删除属性从而重 ...

  2. cookie和session的介绍

    1.cookie和session cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此产生cookie. cookie的工作原理是:由服务器产生 ...

  3. 微信小程序开发踩坑与总结 -

    原文链接:https://segmentfault.com/a/1190000008516296 前段时间把公司小程序项目开发完成了,所以来写写自己开发过程中碰到的问题和解决方法,以及用到的提高效率的 ...

  4. 牛客小白月赛2 E 是是非非 【尼姆博弈】

    链接:https://www.nowcoder.com/acm/contest/86/E来源:牛客网 题目描述 坎为水,险阳失道,渊深不测:离为火,依附团结,光明绚丽. 坎卦:水洊至,习坎:君子以常德 ...

  5. Logger日志配置级别说明及设置方法、说明

    日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j ...

  6. Percona-Tookit工具包之pt-pmp

      Preface       Sometimes we need to know the details of a program(porcess) when it is running even ...

  7. .Net Core爬虫爬取妹子网图片

    现在网上大把的Python的爬虫教程,很少看见有用C#写的,正好新出的.Net Core可以很方便的部署到Linux上,就用妹子图做示范写个小爬虫 在C#下有个很方便的类库 HtmlAgilityPa ...

  8. C++ 基础 引用

    1.引用的本质 int b = 10; int &a = b; 等效于: int * const a = &b; 由于 a 是 const声明,所以一旦定义无法修改,所以要在定义时就要 ...

  9. SPOJ1026 概率DP

    Favorite Dice BuggyD loves to carry his favorite die around. Perhaps you wonder why it's his favorit ...

  10. Git-改变历史

    悔棋 在日常的Git操作中,会经常出现这样的状况,输入git commit命令刚刚敲下回车键就后悔了:可能是提交说明中出现了错别字,或者有文件忘记提交,或者有的修改不应该提交,诸如此类. Git提供了 ...