• 实验7 BindService模拟通信


    实验报告

    课程名称

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

    实验日期

    5.3

    实验项目名称

    BindService模拟通信

    实验地点

    S3002

    实验类型

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

    学  时

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

    1. 要求:

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

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

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

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

    1. 目的:

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

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

    (1)PC机

    (2)操作系统:Windows XP

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

    三、实验内容及步骤

    1. 添加所需按钮
    2. 在BindService中的内部类MyBinder中添加控制音乐播放的方法.
    3. 完善MainActivuty中的代码.
    4. 在MainActivuty中,添加控制音量大小的代码.

    代码:

     

    PlayMusic代码:

    package com.example.serviceplaymusic;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import android.app.Activity;

    import android.app.Service;

    import android.content.ComponentName;

    import android.content.Intent;

    import android.content.ServiceConnection;

    import android.content.SharedPreferences;

    import android.os.Binder;

    import android.os.Bundle;

    import android.os.IBinder;

    import android.util.Log;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.Toast;

    public class PlayMusic extends Activity {

       

        Button start,bind,zj,jx;  

        private MusicService.MyBinder binder;

        private int com;

        private int count=0;

        private boolean star=true;

        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=(MusicService.MyBinder) arg1;

              }

        };

       

        @Override

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_play_music);

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

            zj=(Button)findViewById(R.id.button2);

            jx=(Button)findViewById(R.id.button3);

            bind=(Button)findViewById(R.id.button1);

            final Intent intent=new Intent(PlayMusic.this,MusicService.class);

            bind.setOnClickListener(new OnClickListener() {

                       

                        @Override

                        public void onClick(View arg0) {

                               //Object binder;

                              

                               bindService(intent, conn, Service.BIND_AUTO_CREATE);

                        }

                 });

             jx.setOnClickListener(new OnClickListener() {

                       

                        @Override

                        public void onClick(View arg0) {

                               // TODO Auto-generated method stub

                               binder.setCount(0);

                               com=binder.getCount();

                        }

                 });

             zj.setOnClickListener(new OnClickListener() {

                       

                        @Override

                        public void onClick(View arg0) {

                               // TODO Auto-generated method stub

                               binder.setCount(1);

                               com=binder.getCount();

                        }

                 });

            

             start.setOnClickListener(new OnClickListener() {

                       

                        @Override

                        public void onClick(View arg0) {

                               // TODO Auto-generated method stub

                               binder.setstar(star);

                               star=binder.getstar();

                               if(star==false)

                                      start.setText("暂停");

                               else

                                      start.setText("播放");

                        }

                 });      

        }

      

    }MusicService代码:

    package com.example.serviceplaymusic;

    import android.app.Service;

    import android.content.Context;

    import android.content.Intent;

    import android.content.SharedPreferences;

    import android.media.AudioManager;

    import android.media.MediaPlayer;

    import android.os.Binder;

    import android.os.IBinder;

    import android.util.Log;

    import android.widget.Toast;

    public class MusicService extends Service {

        private MediaPlayer mp;

        private String TAG="Main";

        private SharedPreferences sp;

        private boolean quit;

        private boolean star=true;

        AudioManager mAudioManager;

       

        private int com;

        private int count;

        private MyBinder binder=new MyBinder();

        public class MyBinder extends Binder{

              public void setCount(int count)

              {

                    

                     com=count;

              }

              public int getCount(){

                     if(com==1){

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

                                          AudioManager.FX_FOCUS_NAVIGATION_UP);

                           

                            }

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

                            else if(com==0){

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

                                                 AudioManager.FX_FOCUS_NAVIGATION_UP);

                            }

                     return com;

              }

         

        public void setstar(boolean Star){

                 star=Star;

          }

          public boolean getstar(){

                 if(star==true){

                        mp.start();

                        return false;

                 }

                 else

                 {

                        mp.pause();

                     return true;

                 }

          }

        }

          @Override

          public IBinder onBind(Intent arg0) {

                 // TODO Auto-generated method stub

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

                 return binder;

          }

          @Override

                 public void onCreate() {

                        // TODO Auto-generated method stub

                        super.onCreate();

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

          new Thread()

          {

                 public void run() {

                        while(!quit)

                        {

                               try {

                                      Thread.sleep(1000);

                               } catch ( InterruptedException e) {

                                      // TODO: handle exception

                               }

                               count++;

                        }

                 };

          }.start();

                        mp=MediaPlayer.create(this, R.raw.kzsdqc);

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

                 }

          @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();

                        this.quit=true;

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

                 }

    }

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

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

        通过实验加深对bindservice服务的理解,运用服务实现对音乐源文件的播放,并实现对该音频音量大小的控制。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

               
  • 相关阅读:
    DRF 分页
    DRF 权限 频率
    DRF 版本 认证
    opencl(6)读写传输命令、内存映射命令
    opencl(5)缓存对象
    opencl(4)命令队列
    opencl(3)程序、内核
    opencl(2)平台、设备、上下文的获取与信息获取
    epoll
    unsigned 变量名:n
  • 原文地址:https://www.cnblogs.com/badgood/p/5454207.html
Copyright © 2020-2023  润新知