实验7

实验报告


课程名称


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


实验日期


2016年4月22日


实验项目名称

BindService模拟通信


实验地点


S30010


实验类型


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


学  时


2


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


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

2.要求:实现从启动端传递一个数据至BindService端;

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

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

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


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


(1)PC机

(2)操作系统:Windows XP

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


三、实验内容及步骤


1)完善Activity类

2)新建Service类


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


代码:

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 mp;

private int count;
private boolean quit;
private MyBinder binder=new MyBinder();
public class MyBinder extends Binder{
    public int getCount()
    {
        return count;

    }
    public void MusicStar()
    {
        mp=MediaPlayer.create(BindService.this,R.raw.big);
        mp.start();
    }
    public void MusicPause()
    {
        mp.pause();
    }
    public void MusicStop()
    {
        mp.stop();
    }
}
    @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();

        }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        //mp.start();
        //mp.pause();
        return super.onStartCommand(intent, flags, startId);
    }
    @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");
        }

}
package com.example.bindservicedemo;

import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
private Button bind,unbind,getServiceStatus,intentServiceButton,comServiceButton,star,stop,pause,voicejia,voicejian;
private BindService.MyBinder binder;
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=(BindService.MyBinder) arg1;
    }
};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bind=(Button)findViewById(R.id.button1);
        unbind=(Button)findViewById(R.id.button3);
        getServiceStatus=(Button)findViewById(R.id.button2);
        intentServiceButton=(Button)findViewById(R.id.button4);
        comServiceButton=(Button)findViewById(R.id.button5);
        star=(Button) findViewById(R.id.buttonStar);
        pause=(Button) findViewById(R.id.buttonPause);
        stop=(Button) findViewById(R.id.buttonStop);
        voicejian=(Button) findViewById(R.id.buttonVoicejian);
        voicejia=(Button) findViewById(R.id.buttonVoicejia);
        final Intent intent=new Intent(MainActivity.this,BindService.class);
        //绑定方式创建Service
        bind.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                bindService(intent, conn, Service.BIND_AUTO_CREATE);
            }
        });
        //解绑Service
        unbind.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                unbindService(conn);
            }
        });
        //获取Service状态
        getServiceStatus.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "Service 的count值为:"+binder.getCount(), Toast.LENGTH_LONG).show();
            }
        });
        //普通Service创建方式
        comServiceButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(MainActivity.this,ComService.class);
                startService(intent);
            }
        });
        //使用IntentService方式创建
        intentServiceButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(MainActivity.this,MyIntentService.class);
                startService(intent);
            }
        });

        star.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                binder.MusicStar();
            }
        });

        pause.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                binder.MusicPause();
            }
        });

        stop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                binder.MusicStop();
            }
        });

        voicejian.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,
                        AudioManager.FX_FOCUS_NAVIGATION_UP);

            }
        });

        voicejia.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,
                        AudioManager.FX_FOCUS_NAVIGATION_UP);

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

运行结果:(截图)


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


这次实验相对来说比较难,也睡通过别人的帮助和上网找资料才勉强完成,感觉掌握得还是不够。


实验评语


 


实验成绩


 


指导教师签名:              年   月   日

           
时间: 2024-08-24 09:15:51

实验7的相关文章

如何使用GNS3和Cisco IOU搭建路由交换实验-IOU篇

前面介绍了GNS3的概念,安装,配置和使用,本篇将介绍怎么利用GNS3配置IOU从而实现使用GNS3和Cisco IOU搭建路由交换实验. 由于本篇篇幅较长,所以先过一下大纲: 1. IOU模拟环境介绍 2. IOU软件环境的准备 3. VMware虚拟机的安装.导入和配置 4. IOU镜像的上传 5. GNS3的配置 6. IOU模拟环境的实现 IOU模拟环境介绍 IOU即IOS running in Unix,最初是由思科内部人员开发来测试IOS的平台,后来流传到互联网经网友改进有了后来的W

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

webservice实验一

实验目的:安装jdk1.6_21以后的版本,利用JAX-WS API自己发布webservice并调用,以及用wsimport生成webservice客户端代码调用一个免费的web服务(如webxml.com.cn上的获取手机归属地的服务). 一.webservice原理了解 webservice是一种通用的跨语言跨平台的数据交互方式,之所以能够做到这一点,是因为它的底层实现机制是依赖于HTTP协议以及XML格式这些开发的标准.webservice使用SOAP(simple object acc

Cisco ISE + Windows Server 2008 实验

实验说明:此实验参考生产环境中某部分环境搭建而成,此环境Windows Server 2008用于登录用户.MAC等账号的认证,Cisco ISE用于认证授权等,无线部分利用VMWLC + Cisco 1702AP测试测试.因为为实验环境,整体网络架构所有节点为单点:Cisco ISE部分功能没有应用上,如测试PC端的补丁.防毒补丁.设备认证等(此部分在生产环境上实施),下图为此实验的网络架构图. Windows AD:  172.16.1.199 Cisco VMISE: 172.16.1.1

CentOS系统启动及内核大破坏模拟实验

讲过了centos的启动流程,此时是不是想来点破坏呢?那就尽情的玩耍吧,记得在实验之前拍个快照,万一哪个环节错误恢复不回来了呢,毕竟数据无价,话不多说,开始. 一.删除伪系统根.(ramdisk文件) (1)模拟误操作删除ramdisk文件. ①模拟误删除initramfs-3.10.0-514.el7.x86_64.img文件. ②为当前正在使用的内核重新制作ramdisk文件 格式为:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (

PCB实验与检修杂记

2017-08-24 有ABCD四个焊点,diagram上A与B相连,C与D相连,B与C属于同一组引脚.现根据实验要求将B.C短接,结果测得,B与C导通而A与C不导通,这与常识违背. 经过逐步缩小范围发现,C点上方留出的测量点和焊台的测量结果有所不同,经过分析,可知C点焊脚与焊台虚焊,测量时再表笔的压力下两者导通:而表笔一但离开C点,则两者不导通.即测量引入了误差. 对于此问题解决的思路: 1.稳扎稳打,逻辑分析,逐步缩小范围.2.测量引脚上方留出的点比直接测量引脚更可靠.

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

实验三+036+吴心怡

1)被测项目界面. 2)测试用例设计表 等价类 输入条件 有效等价类 编号 无效等价类 编号 年 1912≤year≤2050 ① year<1912 ② Year>2050 ③ 非数字 月 Month= 1,3,5,7,8,10,12 ④ Month<1 ⑤ Month= 4,6,9,11 month>12 ⑥ Month= 2 非数字 日 1≤ day ≤31 ⑦ day<1 ⑧ Day>311 ⑨ 非数字 测试用例表 测试用例编号 输入数据 预期输出 实际结果 通

实验三+018+李滨

1)被测项目界面. 2)测试用例设计表 等价类 输入条件 有效等价类 编号 无效等价类 编号 年 1912≤year≤2050 ① year<1912 ② Year>2050 ③ 非数字 月 Month= 1,3,5,7,8,10,12 ④ Month<1 ⑤ Month= 4,6,9,11 month>12 ⑥ Month= 2 非数字 日 1≤ day ≤31 ⑦ day<1 ⑧ Day>311 ⑨ 非数字 测试用例表 测试用例编号 输入数据 预期输出 实际结果 通

实验三+099+吴丹丹

一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实践.(作业若雷同,后上传者判定0分) 三.实验内容 1.对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结. 要求写出测试用例表.执行情况和测试小结. 2.对手机上任意一款音乐软件进行黑盒测试. 要求:1)使用思维导图 2)根据场景法.状态图法 设计测试用例. 3)附加题:如有可