实验7 BindService模拟通信

实验报告

课程名称

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

实验日期

2016.04.20

实验项目名称

BindService模拟通信

实验地点

S3002

实验类型

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

学  时

6

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

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

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

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

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

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

(1)PC机

(2)操作系统:Windows XP

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

三、实验内容及步骤

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

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

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

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

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

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

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

代码:

xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

 

    <Button android:id="@+id/btnPlay"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="播放音乐" />

 

    <Button

        android:id="@+id/btnPause"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="暂停音乐" />

 

    <LinearLayout android:orientation="horizontal"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal">

        <Button android:id="@+id/btnUpper"

            android:text="音量+"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" />

        <Button android:id="@+id/btnLower"

            android:text="音量—"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" />

    </LinearLayout>

</LinearLayout>

主要的main

public class MainActivity extends Activity {

    private Button btnPlay=null, btnUpper=null, btnLower=null,btnPause=null;

    private MediaPlayer mediaPlayer=null;

    private AudioManager audioManager=null;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        audioManager=(AudioManager)getSystemService(Service.AUDIO_SERVICE);

       

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

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

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

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

       

        btnPlay.setOnClickListener(listener);

        btnUpper.setOnClickListener(listener);

        btnLower.setOnClickListener(listener);

        btnPause.setOnClickListener(listener);

    }

   

      View.OnClickListener listener=new View.OnClickListener(){

            public void onClick(View v) {

                @SuppressWarnings("unused")

                Button btn=(Button)v;

                switch (v.getId()) {

                case R.id.btnPlay:

                    mediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.nanshannan);

                    mediaPlayer.setLooping(true);

                    mediaPlayer.start();

                    break;

                case R.id.btnPause:

                  mediaPlayer.pause();

                  break;

                case R.id.btnUpper:

                    audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,

                            AudioManager.ADJUST_RAISE,

                            AudioManager.FLAG_SHOW_UI);

                    break;

                case R.id.btnLower:

                     audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,

                            AudioManager.ADJUST_LOWER,

                            AudioManager.FLAG_SHOW_UI);

                    break;

                }

            }

        };

}

运行结果:(截图)

 

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

这次实验老师和我们说相对比较难,所以做这个实验是比较有压力的,有些害怕,因为我对代码就没有太大兴趣,难度加大更不想去学了。

这次实验我先看老师给的BindServic文档资料,再运行代码,可能是没有真正理解,会觉得比较乱,不知道哪一些是绑定,哪一些传递通信。按照自己的理解是,首先获取AudioManager,然后通过按钮的监听,向AudioManager获取音量信息,再调节音量大小。

当按照自己理解,结合查询的资料,实现了音量调节功能,心里还是很开心的。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           
原文地址:https://www.cnblogs.com/zhengyh/p/5453176.html