实验七 BindService模拟通信

实验报告

课程名称

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

实验日期

2016年4月22日

实验项目名称

BindService模拟通信

实验地点

S30010

实验类型

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

学  时

 

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

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

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

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

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

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

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

(1)PC机

(2)操作系统:Windows XP

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

三、实验内容及步骤

1、在MusicSetting中利用绑定方式创建service

2、创建服务连接监听对象

3、创建一个继承于Service的类BindService.java并修改

4、创建动作监听

5、使用AudioManager初始化定义音量控制

6、用adjustStreamVolume方法实现音量大小调节,setStreamMute方法设置静音

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

代码:MusicService类代码

public class MusicSetting extends Activity {

    private TextView tv2;

    private Button bindbtn;

    private Button getservicebtn;

    private Button strongbtn;

    private Button lowbtn;

    private CheckBox checkBox;

    private ServiceConnection connection;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.music_setting);

       

        final AudioManager mAudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);     //音量控制初始化定义

       

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

       

        tv2=(TextView)findViewById(R.id.textView2);

       

    //创建服务连接监听对象

         connection =new ServiceConnection() {

          public void onServiceDisconnected(ComponentName arg0) {

            System.out.println("Service is disconnected ");

          }

       

          public void onServiceConnected(ComponentName arg0, IBinder arg1) {

            System.out.println("Service  connected ");   //创建连接获取IBinder

          }

        };

      

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

       strongbtn.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {                         

            int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

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

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

                    AudioManager.FX_FOCUS_NAVIGATION_UP);     //参数含义:声音类型,调整音量的方向,可选的标志位

            tv2.setText("当前音量大小为:"+currentVolume);

        }

    });

      

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

       lowbtn.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {                         

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

                    AudioManager.FX_FOCUS_NAVIGATION_UP);  //参数含义:声音类型,调整音量的方向,可选的标志位

            int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

            tv2.setText("当前音量大小为:"+currentVolume);

        }

    });

      

       checkBox=(CheckBox)findViewById(R.id.checkBox1);

       checkBox.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);

        }

    });

    }

}

BindService类代码:

public class BindService extends Service{

    private int count;

    private MyBinder binder=new MyBinder();

    public class  MyBinder extends Binder{      // 创建一个继承于Service的类BindService,在BindService类中创建一个内部类

    }

    public void Oncreate(){

        super.onCreate();

        System.out.println("Service is Created");

    }  

    public IBinder onBind(Intent arg0) {

        System.out.println("Service is Binded");

        return binder;

    }  

}

运行结果:(截图)                           

单击menu菜单后显示:                                               

单击“增大音量”后显示

 

单击减少音量显示: 

      

勾选静音,再次单击“增大音量”显示:

 

 

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

    刚开始做实验时思路很不清晰,MainActivity类、MusicSetting类、BindService类、MusicService服务之间的关系很乱,不知道在哪里创建service,不知道怎样用绑定方法创建servic,不知道在哪里创建服务连接监听对象。有些构造函数的参数也不明白是什么意思,后来认真阅读实验步骤和教案,逐步实现用BindService调节音量大小、设置静音。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           

 

 

 

原文地址:https://www.cnblogs.com/family6/p/5424074.html