• 实验7 BindService 模拟通信


    课程名称

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

    实验日期

    2016-5-2

    实验项目名称

    BindService模拟通信

    实验地点

    S3010

    实验类型

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

    学  时

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

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

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

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

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

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

    (1)PC机

    (2)操作系统:Windows XP

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

    三、实验内容及步骤

    1.导入工程

     

    2.为布局文件mediaplayer 添加一个SeekBar控件。

    3.完善activity类。

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

    代码:

    一、

    1、启动BindService

           Intent intent=new Intent(MainActivity.this,MyService.class);

            bindService(intent, connection, Service.BIND_AUTO_CREATE);

    2、获取传递音量值,控制音量

    //获取音量值

      private MyBinder binder=new MyBinder();

        public class MyBinder extends Binder{

            public int getVolume(){

                return AM.getStreamVolume(AM.STREAM_MUSIC);

               

            }

        }

     

        @Override

        public IBinder onBind(Intent arg0) {

            // TODO Auto-generated method stub

            return binder;

        }

        @Override

        public void onCreate() {

        super.onCreate();

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

        //获取当前系统音量值和最大音量值

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

            maxVL=audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);       sBar.setMax(maxVL);

    //设置监听事件

    sBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

               

                @Override

                public void onStopTrackingTouch(SeekBar arg0) {

                    // TODO Auto-generated method stub

                   

                }

               

                @Override

                public void onStartTrackingTouch(SeekBar arg0) {

                    // TODO Auto-generated method stub

                   

                }

               

                @Override

                public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {

                    // TODO Auto-generated method stub

                    currentVL=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

                    sBar.setProgress(currentVL);

                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,arg1, 0);

                }

            });

    3、暂停播放音乐

    pauseBtn.setOnClickListener(new OnClickListener() {

               

                @Override

                public void onClick(View arg0) {

                    // TODO Auto-generated method stub

                    //stopService(intent);

                    //mediaPlayer.stop();

                    currentVL=0;

                    sBar.setProgress(0);

                    Toast.makeText(TMediaplayer.this, "停止播放", Toast.LENGTH_SHORT).show();

                   

                }

            });

    4、退出

    exitBtn.setOnClickListener(new OnClickListener() {

               

                @Override

                public void onClick(View arg0) {

                    // TODO Auto-generated method stub

                    stopService(intent);

                   

                    intent.setClass(TMediaplayer.this,LoginActivity.class);

                    startActivity(intent);

                }

            });

    运行结果:(截图)

    一、

     

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

    通过这次实验,基本了解了BindService的运用,可以实现通过SeekBar控件来控制音量,并且可以暂停音乐播放以及退出当前界面。但是第一次点击暂停播放音乐,可以使音量值保持当前音量值,第二次点击停止播放音乐,音量值会置为0,需要拖动滑块才能继续播放音乐。代码还需进一步的改善。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

  • 相关阅读:
    rowkey设计原则和方法
    ubuntu安装及使用
    sqoop数据迁移
    Hive 自定义UDF操作步骤
    hive之数据导入导出
    MySQL优化
    MongoDB、Redis、elasticSearch、hbase的对比
    数据库基本操作
    count(*) 和 count(1)和count(列名)区别
    BigDecimal的运算——加减乘除
  • 原文地址:https://www.cnblogs.com/Dawn----123/p/5453363.html
Copyright © 2020-2023  润新知