zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    寒假作业第二组E题题解
    寒假作业第二组C题题解
    [LeetCode]-DataBase-Employees Earning More Than Their Managers
    Python爬取中文页面的时候出现的乱码问题(续)
    用命令行编译运行java文件的乱码问题
    Python爬取中文页面的时候出现的乱码问题
    Python模拟登陆
    Mysql中经常出现的乱码问题
    数据表的自身连接
    人总会有无奈和彷徨的时候,这个时候你就需要一盏明灯。
  • 原文地址:https://www.cnblogs.com/gzcc/p/5445004.html
Copyright © 2011-2022 走看看