• 实验7 BindService模拟通信


    实验报告

    课程名称

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

    实验日期

    2015年4月27日

    实验项目名称

    BindService模拟通信

    实验地点

    S30010

    实验类型

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

    学  时

    2

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

    【目的】

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

    【要求】

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

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

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

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

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

    (1)PC机 

    (2)操作系统:Windows XP 

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

    三、实验内容及步骤

    1、先创建BindService,使用audiomanager来控制音量

          2、在MainActivity中调用IBinder绑定BindService实现数独游戏背景音乐的自动播放

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

    代码:

    Bindservice主要代码

    import android.app.Service;

    import android.content.Context;

    import android.content.Intent;

    import android.media.AudioManager;

    import android.media.MediaPlayer;

    import android.os.Binder;

    import android.os.IBinder;

    public class BindService extends Service {

    private MediaPlayer mediaPlayerBS = new MediaPlayer();

    private BinderMusic binder = new BinderMusic();

    AudioManager audiomanage;

    boolean isSilent = false;

    public void setsilent(boolean isSilent) {

    if (isSilent) {

    audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);

    } else {

    audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, 1000, 1000);

    }

    }

    public void setvolum(int setting) {

    audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, setting, 100);

    }

    private int Volum = 0;

    public int getVolum() {

    return Volum;

    }

    public int setVolum() {

    return 0;

    }

    @Override

    public void onCreate() {

    // TODO Auto-generated method stub

    mediaPlayerBS = MediaPlayer.create(BindService.this, R.raw.nan);

    // mediaPlayer2.start();

    mediaPlayerBS.start();

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

    super.onCreate();

    }

    @Override

    public boolean onUnbind(Intent intent) {

    // TODO Auto-generated method stub

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

    return super.onUnbind(intent);

    }

    @Override

    public void onDestroy() {

    // TODO Auto-generated method stub

    super.onDestroy();

    if (mediaPlayerBS.isPlaying()) {

    mediaPlayerBS.stop();

    mediaPlayerBS.release();

    }

    }

    public class BinderMusic extends Binder {

    public BindService getBindService() {

    return BindService.this;

    }

    }

    @Override

    public IBinder onBind(Intent arg0) {

    // TODO Auto-generated method stub

    return binder;

    }

    };

    IBinder绑定服务部分代码

    private ServiceConnection conn=new ServiceConnection() {

    @Override

    public void onServiceDisconnected(ComponentName arg0) {

    // TODO Auto-generated method stub

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

    }

    @Override

    public void onServiceConnected(ComponentName arg0, IBinder arg1) {

    // TODO Auto-generated method stub

    System.out.println("Service Connected");

    binder=(BinderMusic) arg1;

    //Toast.makeText(MainActivity.this, String.valueOf(binder.getVolum()), Toast.LENGTH_LONG).show();

    //创建连接获取IBinder

    }

    运行结果:(截图)

     

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

    1、本次实验基本上实现了BindService的部分通信,能够播放背景音乐,但还有待完善,特别是音量控件的监听事件机制不够了解

    2、要继续温顾和理解关于服务类的使用方法,以及音量控制控件的使用。

    实验评语

    实验成绩

    指导教师签名:              年   月   日

  • 相关阅读:
    如何使用php实现首页和子页面之间的交互
    用php实现,打开哪个页面哪个页面就有默认的样式
    后台链接前台有关显示不显示
    上传文件的最大值,post传值的最大值得修改
    linux 操作系统的安装,本地登录及远程登录,vnc连接操作详细步骤
    滑动组件
    Numpy简介
    java对象序列化
    集合类操作需要注意的地方
    TreeMap详解
  • 原文地址:https://www.cnblogs.com/clcbk/p/5453802.html
Copyright © 2020-2023  润新知