蓝牙割草机App设计毕业设计论文.pdf

上传人:教**** 文档编号:87910394 上传时间:2023-04-18 格式:PDF 页数:28 大小:495.91KB
返回 下载 相关 举报
蓝牙割草机App设计毕业设计论文.pdf_第1页
第1页 / 共28页
蓝牙割草机App设计毕业设计论文.pdf_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《蓝牙割草机App设计毕业设计论文.pdf》由会员分享,可在线阅读,更多相关《蓝牙割草机App设计毕业设计论文.pdf(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、目录第 1 章 绪论.11.1 课题背景、目的及意义.11.1.1 课题背景.11.1.2 课题目的和意义.11.2 目前的行业现状.1第 2 章 Android 平台简介.22.1Android 发展.22.2Android 的版本.22.3Android 优势.22.4Android 应用.3第 3 章 Android 系统架构.43.1 应用程序.43.2 应用程序框架.4第 4 章 蓝牙割草机 App 需求分析.54.1需求分析.54.1.1 蓝牙割草机 App 设计目的.54.1.2 蓝牙割草机 App 可行性.54.2 蓝牙割草机 App 功能分析.5第 5 章 功能模块分析.85

2、.1 登录注册模块功能分析.85.2 同意协议许可模块.125.3 定时启动模块.145.4 使用割草机记录模块.17第 6 章 Android 和 Linux 分析.216.1Android 内核.21第 7 章 蓝牙割草机 App 测试分析.227.1 功能与测试.227.2 测试方法.227.3 测试用例.22结 论.24参考文献.25致 谢.26第 1 章 绪论1第 1 章 绪论1.1 课题背景、目的及意义1.1.1 课题背景安卓系统,最开始的时候是由安迪鲁宾为首的一些人组建的团队,之后创建了自己的公司,后来安迪鲁宾的公司被谷歌公司进行收购,然后安卓就变成了美国的 Google公司的产

3、品,然后安迪鲁宾就顺理陈成章的变成了 Google 公司工程部的一名资深人员,任职为 Google 的副总裁的职位。即使安迪鲁宾自己变成了 Google 的资深员工,自己仍然也继续负责安卓的项目。正因为安迪鲁宾的公司被 Google 公司收购之后,自己的产品安卓系统才会越来越好。才有了现在风生水起的市场浪潮。后来出现了 Google 开始建立了一个联盟组织,这个组织由电子商业圈组成,做芯片、做硬件等等。一起共同来改良这款 android 系统;后来 Google 公司还以免费开源的方式来进行授权,对 Android的系统进行开源,开放源代码供大家使用。1.1.2 课题目的和意义现在电子信息行业

4、发展迅猛,电子信息化也给当今社会不断的进步,不断的产生新机会和新市场。本课题介绍了这款以蓝牙连接为基础的 Android 手机应用程序蓝牙割草机 App 作了需求分析。本课题介绍的蓝牙割草机 App 的这款应用程序是使用 AS 工具进行开发,这是现在市场上最主流的一种开发工具。这款蓝牙割草机 App 应用程序是对城市私人家庭中的割草机进行简易化管理,蓝牙割草机 App 实现了蓝牙连接割草机然后进行控制割草机工作。这款蓝牙割草机可以大大提高用户的操作效率,方便用户进行操作。为用户节约了时间成本,这款蓝牙割草机 App 应用程序在实际的生活当中具有一定的实际应用能力,这就是蓝牙割草机 App 的最

5、主要的意义所在。1.2 目前的行业现状安迪鲁宾的公司团队被谷歌公司进行收购之后,然后安卓就变成了美国的 Google公司的产品,现在安卓系统才会越来越好,才有了现在风生水起的市场浪潮。对于生活在城市的人来说越来越注重健康开始关心身边的环境问题,都喜欢环境好的地方,有花有草有风景。本课题根据割草机开发了这一款手机应用程序蓝牙割草机 App。第 2 章 Android 平台简介2第 2 章 Android 平台简介2.1Android 发展安卓是一种便捷式的系统,它包含了很多组件以及应用,其中安卓的组件有acitivity、services 和 contentprovider 等等,它原始的 lo

6、go 是一个像人的机器,于是就起名称为 Android。最开始的 LOGO 就是一个蜜蜂形状的一个机器人的 LOGO 形状;后来安迪鲁宾的公司被谷歌公司进行收购。于是 Google 开始建立了一个联盟组织,这个组织由电子商业圈组成,做芯片、做硬件等等。一起共同来改良这款 android 系统;后来 Google 公司还以免费开源的方式来进行授权,对 Android 的系统进行开源,开放了安卓系统的源代码。2.2 Android 的版本最原始的 logo 是一个像人的机器,于是就起名称为 Android。最开始的 LOGO 就是一个蜜蜂形状的一个机器人的 LOGO 形状。后来安卓被 google

7、 公司越做越好,市场越做越大。后来安卓系统不断开始更新,出现了很多个版本:比如冰激凌三明治版本和 jerry版本等等,后来就出来了 6.0、7.0 版本,到现在早已经有了 Android8.0 的安卓系统的版本了。2.3 Android 优势自从安卓问世以来,安卓就不断发展,欣欣向荣。其实 Android 的优势有很多,既然有优势就肯定有劣势,但是对于安卓的系统来说,安卓系统的优势是远远大于劣势的,比如说安卓的平台开发性,各个厂商都可以自己去下载源代码,然后自己去深入安卓系统进行定制自己的手机品牌以及硬件和软件。另外安卓系统还有着很多的硬件,丰富的硬件,因为安卓平台是开放性平台,正是因为安卓系

8、统的平台的开放性,导致各个厂商的手机产品层出不穷,各个产品也不尽相同。但是这样的情况不会影响手机产品的性能,更不会导致硬件和软件程序的崩溃和不兼容的情况。并且这样还有一个好处就是可以相互的学习改进以及方便开发。另外一个优势就是因为安卓是 Google 的产品,自己家的系统以及手机程序应用肯定会有很好的兼容以及优化;并且 Android 的平台与 Google的服务完全融合,这一点做的很好。第 2 章 Android 平台简介32.4 Android 应用安卓系统在长期的开发过程中,不断有着新的团队在进行开发维护。有一些制作团队因其出色的使用体验、独特的界面风格和稳定的更新维护在众多品牌中脱颖而

9、出。在其中有些手机厂商自己定制系统的做法很有意思,颇有些当年黑莓打造 BlackBerry OS的意味,但站在安卓的肩膀上进行的二次开发,工作量着实减少了不少。这就导致了谷歌系统的困境:原本是为了更好的体验而开发的功能,现在却被一些无良 app 利用,反而搞坏了名声。另外,为了整治国内 app 的运行环境,绿色守护与 AppSo 联合发起了一项名为 Android 绿色应用公约的活动,但是目前响应号召的 app 还很少,多是一些比较小众的年轻应用(也包括绿色守护、知乎、煎蛋网等),因此推广力度十分有限,相对来说安卓手机上的应用还是挺多的,但是多并不一定好,这就需要广大开发者去不断优化,不断提升

10、自己。第 3 章 Android 系统架构4第 3 章 Android 系统架构3.1 应用程序安卓手机的系统其实和别人的操作系统差别不是很大,都是类似采用了多个层级关系来进行开发,在 android 的官网上查看架构图,里面包含了很多块,也分了很多层,比如说应用程序层和应用程序框架层,当然还有自己系统的内核层,安卓系统的内核层是 linux 的内核版本,理所当然,linux 的内核是 Android 手机的开发基石。对于安卓系统来说,linux 的内核版本不能少,linux 版本直接关系到安卓系统的稳定性和可用性;linux 系统简直就是安卓的父亲一样,这个角色不可替代。3.2 应用程序框架

11、安卓的应用程序框架分为很多要点,比如说有活动,消息,视图以及任务等等。安卓系统应用程序包含很多的部分,它的系统内部有专门的堆栈的内存空间,当一个活动启动的时候就开始进行活动状态,调用的顺序就是 onRestart 状态,销毁的时候调用的是 OnDestroy 状态进程。所有的进程的活动必须在项目的基础的配置文件当中声明这些配置,这样活动操可以被安卓应用程序框架进行系统识别;如果不声明,运行的时候会抛出活动没有发现的异常。一般情况下,我们可以在安卓系统的配置基础配置文件中使用 activity 元素的launchMode 属性来控制活动进程在任务中的行为以及运行过程。平常我们就使用的单例模式,和

12、 singleTask 类似,这个模式下活动模式保证独占一个 task,其他的活动是不可以也都不能存在于该任务的堆栈中。活动接收 Intent 消息也是通过 intent 消息来接受调用方法进行实现的。第 4 章 蓝牙割草机 App 需求分析5第 4 章 蓝牙割草机 App 需求分析4.1需求分析4.1.1 蓝牙割草机 App 设计目的本课题蓝牙割草机 App 属于城市用户家庭自己使用的用来除草的割草机。方便用户平时外出或者没时间造成的忘记割草任务。这样只要通过这个割草机 App 可以对割草机进行远程操作。让蓝牙割草机 App 应用程序连接上手机然后开始进行割草工作。在现在的社会中,有很多城市

13、家庭开始有了自己的房子,自己的花园和草坪。城市家庭差不多都是住在小区里面,都需要修建草坪等等这些。根据对城市家庭当中使用割草机的频率和市场上的割草机的比较,根据割草机的特殊性开发了蓝牙割草机 App 手机应用。4.1.2 蓝牙割草机 App 可行性(1)经济可行性现在在城市当中很多人都住在小区,加上城市用户家庭自己使用的用来除草的割草机。方便用户平时外出或者没时间造成的忘记割草任务。这样只要通过这个割草机 App可以对割草机进行远程操作,然后提高用户的使用体验,很大程序上提高了用户的效率。并且还给使用此软件的用户起到一个节约时间的作用,可以大大的提高工作的效率,节约了用户的时间成本;这也是一个

14、很好的经济收益出发点。(2)技术可行性Android 可以在 eclipse 中安装 Android 开发插件,也可使用 AndroidStudio 进行开发,当然现在市面上主要是以 AS 为 Android 主流的开发工具。使用了 okhttp 这样的简易框架来进行开发,这种框架是现在市场上比较受欢迎的框架。并且这款框架也挺容易使用的,大家都可以直接使用第三方的 API 来进行接口开发。4.2 蓝牙割草机 App 功能分析本课题蓝牙割草机 App 软件应用程序使用了很多第三方的 Api,应用了市场上的主流第三方接口,比如有 SMS 短信接口和蓝牙对连接口等等,这款 App 应用程序软件设计的

15、主要功能有:注册登录模块功能、同意协议许可模块功能、定时启动功能、使用记录查询模块、应用推广和个人中心功能等等模块。实现蓝牙割草机的友好交互易操作性。第 4 章 蓝牙割草机 App 需求分析6对割草机 App 的注册登录模块功能、同意协议许可模块功能、定时启动模块、查看使用记录功能模块、应用实时推广功能和实现个人中心模块等等基本功能去实现,对割草机的功能模块化进行开发设计。图 4-1 主界面结构图系统设计:首先是登录注册模块,就是当用户进入割草机软件 App 软件应用程序之后,会先进入到软件的登录和注册界面,这时候就需要进行登录和注册用户然后在进行其他操作。它会提醒用户进行手机号码或者邮箱注册

16、,等用户按照要求注册完之后才可以进入下一个界面,否则就不能进入其他界面,只能一直在登录界面。在登录和注册界面自己还写好了验证格式,保证用户要输入正确,才可以继续使用。比如:你输入的密码不正确,请输入的正确的密码等等。实现蓝牙割草机的友好交互易操作性。对割草机App 的注册登录模块功能、同意协议许可模块功能、定时启动模块、查看使用割草机记录功能模块、应用实时推广功能和实现个人中心模块等等基本功能去实现,对割草机的功能模块化进行开发设计。同意许可模块,根据字面意思来说就是用户使用 App 需要对软件的协议进行阅读,并且要同意以及接收这个协议,然后来进行下一步操作。就是当用户注册完成登录之后,就会进

17、入这个界面进行阅读协议并且接受协议;许可界面是用户使用这款蓝牙割草机App 的时候需要注意的一些问题,以及 App 的许可条款。当用户同意接收官方给出的协议并且阅读接收许可之后再接受协议条款才可以进入主界面进行其他操作。定时启动模块:定时启动模块是指用户比较忙的时候,需要割草机自己启动去工作,之后按照设计第 4 章 蓝牙割草机 App 需求分析7的时间工作,然后自己再关闭。查看使用割草机记录功能模块:当用户每进行一次割草,蓝牙割草机 App 就会自动进行一次操作记录,保存在自己的数据库当中,这就方便用户知道自己的操作记录,并且可以随时去查看记录等等。查看使用记录功能模块其实就是查看机器的使用记

18、录,查看它的历史记录,什么时候做过什么,比如说,今天我使用了一次蓝牙割草机 APP 应用程序,今天我使用的这个时间就会有一个时间进行记录,然后存在本地进行日志的一个记录,等需要使用查看这次记录的时候就可以直接去本地查询这个记录,进行查询显示。然后每使用一次割草机App 的时候就会有一次记录进行生成,每使用一次就会产生一次记录,当记录越来越多,日志记录也越来越多,那么系统就会自动来清除这个历史记录,释放出一些空间用来下次进行记录,系统自己会把这个操作进行回收。个人中心模块就有很多功能了,里面包括我的推广,我的账户信息,修改账户的信息等等,推广的话就是用户对自己使用这个蓝牙App应用程序的体验进行

19、一个推广宣传,这种方式也是一种运营推销的方式。然后就是账户修改个人的信息修改个人信息也是在这里面进行修改,比如说修改密码和修改机器的名称等;另外还可以修改蓝牙割草机的app 应用程序的 id,个人中心模块主要就是这些模块功能。另外还有定时启动的模块功能,里面是用到了系统自动定时的功能,然后系统到了相应的时间之后,就自动触发另外的事件进行程序运行。比如,现在是 9 点,我需要机器自己在下午 2 点的时候,自己启动进行干活,那么我就需要给他连接上蓝牙,给他设置一个启动时间,在下午两点的时候来定时启动机器来进行工作。这种定时工作、定时启动机制有一种好处,可以方便用户进行操作,并且给用户节约时间,这样

20、不仅能节约使用者的时间成本,另外还方便了用户的操作,很大程度上提高了效率以及机器的可用性。第 5 章 功能模块分析8第 5 章 功能模块分析本课题蓝牙割草机 App 设计的主要功能有:注册登录模块功能、同意协议许可模块功能、定时启动功能模块、使用记录查询模块、应用推广和个人中心等等的功能模块。实现蓝牙割草机的友好交互易操作性。割草机 App 软件应用程序使用了很多第三方的Api,应用了市场上的主流第三方接口,比如有 SMS 短信接口和蓝牙对连接口等等;对割草机 App 的注册登录模块功能、同意协议许可模块功能、定时启动模块、查看使用割草机记录功能模块、应用实时推广功能和实现个人中心模块等等基本

21、功能去实现,对割草机的功能模块化进行开发设计。图 5-1 主体界面结构图5.1 登录注册模块功能分析当用户进入割草机软件 App 之后,这时候就需要进行登录和注册用户然后在进行其他操作。它会提醒用户进行手机号码或者邮箱注册,等用户按照要求注册完之后才可以进入下一个界面,否则就不能进入其他界面。它会提醒用户进行手机号码或者邮箱注册,第 5 章 功能模块分析9等用户按照要求注册完之后才可以进入下一个界面,否则就不能进入其他界面,只能一直在登录界面。图 5-2 登录注册界面主要代码:RegisterActivity.java:private void register().subscribeOn(S

22、chedulers.io()Overridepublic void call(BaseModel registBeanBaseModel)if(registBeanBaseModel.isSuccess()login();else ToastUtil.showShort(mContext,registBeanBaseModel.getMsg();,new Action1()Overridepublic void call(Throwable throwable)showError(););private void register()RetrofitHmonApi().register(ema

23、il,password,captcha).subscribeOn(Schedulers.io().subscribe(new Action1BaseModel()第 5 章 功能模块分析10Overridepublic void call(BaseModel registBeanBaseModel)if(registBeanBaseModel.isSuccess()login();else ToastUtil.showShort(mContext,registBeanBaseModel.getMsg();,new Action1()Overridepublic void call(Throwa

24、ble throwable)showError(););private void sendCode()RetrofitHmonApi().sendCode(email).subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.Overridepublic void call(BaseModel captchaBeanBaseModel)if(captchaBeanBaseModel.isSuccess()timecount.start();/String captcha=captchaBeanBaseModel.getContent().

25、getCaptcha();/mEtCode.setText(captcha);ToastUtil.showShort(mContext,captchaBeanBaseModel.getMsg();else ToastUtil.showShort(mContext,captchaBeanBaseModel.getMsg();,new Action1()Overridepublic void call(Throwable throwable)showError();第 5 章 功能模块分析11);private void login()String token=(String)SPUtil.get

26、(mContext,Constant.SP_DEVICE_TOKEN,);RetrofitHmonApi().login(email,password,token,1).subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread().subscribe(new Action1BaseModel()Overridepublic void call(BaseModel loginBeanBaseModel)try if(loginBeanBaseModel.isSuccess()ToastUtil.showShort(mCo

27、ntext,loginBeanBaseModel.getMsg();App.getInstance().saveUserInfo(loginBeanBaseModel.getContent();startActivity(RulesActivity.class);finish(false);else ToastUtil.showShort(mContext,loginBeanBaseModel.getMsg();catch(Exception e)e.printStackTrace();,new Action1()Overridepublic void call(Throwable throw

28、able)showError(););第 5 章 功能模块分析125.2 同意协议许可模块图 5-3 同意协议许可界面主要代码:PickUpUserActivity.java:private void getConfig()RetrofitHmonApi().config().subscribeOn(Schedulers.io().observeOn().subscribe(new BaseAction()Overrideprotected void onSuc(String msg,ConfigBean content)setValue(content);Overrideprotected

29、void onFail(String message),new Action1()Overridepublic void call(Throwable throwable)第 5 章 功能模块分析13showError(););private void setValue(ConfigBean content)mTvRules.setText(content.getRules();OnClick(R.id.tv_agree)void onClcik(View view)switch(view.getId()case R.id.tv_agree:startActivity(GuideActivit

30、y1.class);finish(false);break;private void getLogs()RetrofitHelper.deviceApi().operating(user_id,autograph,device_id).subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread().subscribe(new BaseAction()Overrideprotected void onSuc(String msg,DeviceOperateBean content)mRecyclerView.refresh

31、Complete(0);dOperatingListBeen=content.getOperating_list();if(dOperatingListBeen!=null&dOperatingListBeen.size()0)mLayoutEmpty.setVisibility(View.GONE);else mLayoutEmpty.setVisibility(View.VISIBLE);mLogListAdapter.setDataList(dOperatingListBeen);第 5 章 功能模块分析14Overrideprotected void onFail(String msg

32、)ToastUtil.showShort(mContext,msg);,new Action1()Overridepublic void call(Throwable throwable)showError(););OnClick(R.id.iv_header_back)public void onClick(View view)switch(view.getId()case R.id.iv_header_back:finish();break;5.3 定时启动模块第 5 章 功能模块分析15图 5-4 定时启动界面主要代码:PerActivity.java:private void subm

33、it()RetrofitHelper.deviceApi().operatingAdd(user_id,autograph,device_id,timer,content).subscribeOn(Schedulers.io().observeOn()Overridepublic void call(BaseModel stringBaseModel)if(stringBaseModel.isSuccess()getMsg();finish();else getMsg();,new Action1()Overridepublic void call(Throwable throwable)sh

34、owError(););Overridepublic void initViews(Bundle savedInstanceState)mIvHeaderBack.setVisibility(View.VISIBLE);mIvHeaderBack.setImageResource(R.drawable.ic_person);mIvHeaderOption.setVisibility(View.VISIBLE);mIvHeaderOption.setImageResource(R.drawable.ic_add);mTvHeaderTitle.setText(getString(R.string

35、.main_title);mDeviceListAdapter=new DeviceListAdapter(this);mDeviceListAdapter.setDataList(mDeviceListBeen);第 5 章 功能模块分析16LRecyclerViewAdapterLRecyclerViewAdapter=newLRecyclerViewAdapter(mDeviceListAdapter);mRecyclerView.setAdapter(LRecyclerViewAdapter);DividerDecoration divider=new DividerDecoratio

36、n.Builder(this).setHeight(R.dimen.recyclerview_divider_height_10dp).setPadding(R.dimen.recyclerview_divider_padding_0dp).setColorResource(android.R.color.transparent).build();mRecyclerView.setHasFixedSize(true);mRecyclerView.addItemDecoration(divider);mRecyclerView.setRefreshProgressStyle(ProgressSt

37、yle.BallPulseSync);mRecyclerView.setLayoutManager(new LinearLayoutManager(this);mRecyclerView.setOnRefreshListener(new OnRefreshListener()Overridepublic void onRefresh()getDevices(););LRecyclerViewAdapter.removeFooterView();LRecyclerViewAdapter.setOnItemClickListener(new OnItemClickListener()Overrid

38、epublic void onItemClick(View view,int position)Bundle bundle=new Bundle();bundle.putString(device_id,mDeviceListBeen.get(position).getDev_id();startActivity(DeviceDetailActivity.class,bundle););Overrideprotected void onResume()super.onResume();第 5 章 功能模块分析17getDevices();Overridepublic void doBusine

39、ss(Context mContext)5.4 使用割草机记录模块图 5-5 记录查看界面主要代码:Read.java:Overridepublic void initViews(Bundle savedInstanceState)mIvHeaderBack.setVisibility(View.VISIBLE);mIvHeaderOption.setVisibility(View.VISIBLE);mIvHeaderOption.setImageResource(R.drawable.ic_qrcode);initData();PersonItemAdapter personItemAdap

40、ter=new PersonItemAdapter(mContext);personItemAdapter.setDataList(mPersonItemBeen);mRecyclerView.setAdapter(LRecyclerViewAdapter);第 5 章 功能模块分析18DividerDecoration divider=new DividerDecoration.Builder(this).setHeight(R.dimen.recyclerview_divider_height_1dp).setPadding(R.dimen.recyclerview_divider_pad

41、ding_16dp).setColorResource(R.color.light_white).build();mRecyclerView.addItemDecoration(divider);Overridepublic void onItemClick(View view,int position)onItemIntent(position););private void getDeviceInfo()String user_id=App.getInstance().getUserId();String autograph=App.getInstance().getSignToken()

42、;RetrofitHelper.deviceApi().devInfo(user_id,autograph,device_id).subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread().subscribe(new Action1BaseModel()Overridepublic void call(BaseModel deviceInfoBeanBaseModel)if(deviceInfoBeanBaseModel.isSuccess()setValue(deviceInfoBeanBaseModel.getC

43、ontent().getDev_info();else ToastUtil.showShort(mContext,deviceInfoBeanBaseModel.getMsg();,new Action1()Overridepublic void call(Throwable throwable)showError();第 5 章 功能模块分析19);private void setValue(DeviceInfoBean.DevInfoBean devInfo)if(!TextUtils.isEmpty(devInfo.getDev_img()Glide.with(mContext).loa

44、d(devInfo.getDev_img().diskCacheStrategy(DiskCacheStrategy.ALL).into(mIvStateImg);else Glide.with(mContext).load(R.drawable.img_default).into(mIvStateImg);mTvDevStatus.setText(devInfo.getStatus_str();mTvDeviceName.setText(devInfo.getDev_name();mTvDeviceNumber.setText(devInfo.getDev_number();mTvAddre

45、ss.setText(devInfo.getDev_address();switch(devInfo.getStatus()case offline:mIvStateImg.setBorderColor(Color.parseColor(#BBBBBB);mTvDevStatus.setTextColor(Color.parseColor(#BBBBBB);break;case home:mIvStateImg.setBorderColor(Color.parseColor(#5BDCFD);mTvDevStatus.setTextColor(Color.parseColor(#5BDCFD)

46、;break;case park:mIvStateImg.setBorderColor(Color.parseColor(#FFD701);mTvDevStatus.setTextColor(Color.parseColor(#FFD701);break;case work:mIvStateImg.setBorderColor(Color.parseColor(#60D060);mTvDevStatus.setTextColor(Color.parseColor(#60D060);第 5 章 功能模块分析20break;case error:mIvStateImg.setBorderColor

47、(Color.parseColor(#D43914);mTvDevStatus.setTextColor(Color.parseColor(#D43914);break;第 6 章 Android 和 Linux 分析21第 6 章 Android 和 Linux 分析6.1Android 内核图 6-1 Android 底层启动安卓的系统是基于 linux 系统的内核,但是它与 linux 系统之间还是有着很大的差别的,比如说安卓在 linux 内核的基础上加入了自己的驱动程序以及功能。安卓选择采用 linux 内核,是有很多原因的,linux 的内核有着很强大的内存管理机制和方案,还可以共

48、享库文件,并且 linux 系统本身就还是开源项目,也是经过认证的驱动模型。Android Console 为了提供调试这些应用程序的功能,Android 允许将调试出来的这些日志信息写入一个叫做 RAM Console 的设备里面,它是一个基于 RAM 的 Buffer 二进制流文件,被存在系统盘里面。linux 系统就拥有很灵活以及很强大的日志的功能,并且还有最主要的一点,Linux系统是基于命令行来进行操作的,这也是 linux 最大的一个特点,linux 系统可以保存几乎所有的操作的记录,并且可以从中检索出我们需要的信息,可以知道我们需要的信息以及知道我们想要什么信息等等。linux

49、系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。基于linux的系统其实在使用方式上就有很多不同,比如说图形界面上就大不相同,再比如说你要安装软件程序,就有好几种的方式来进行安装软件,然后操作方式也不一样,需要在命令行里面进行去操作,输入命令来进行操作,这种方式其实也是 linux 的一大特点。第 7 章 蓝牙割草机 App 测试分析22第 7 章 蓝牙割草机 App 测试分析7.1 功能与测试任何工程产品都是可以使用以下两种方法之一进行测试;现在最主流的测试其实有很多,但是使用最多的还是还是白盒和

50、黑盒测试,如果你已经知道了产品的内部工作的过程,可以通过测试方法来进行软件应用程序的功能和性能。这种方法有点类似与飞机上面所携带的黑匣子,测试者不需要考虑他的功能是不是能满足它的功能以及性能说明等等,因此又叫做功能性的软件应用程序测试的一种方式。7.2 测试方法测试方法在市场上真的有很多,就拿最简单的方式来说,就可以直接用虚拟机来进行测试,另外如果条件允许也可以使用真机来进行测试,只要有这么多的需求,这些基本上都可以被满足。不过测试也分为黑盒测试以及白盒测试,黑盒测试是通过软件应用程序的外部逻辑结构来综合考虑整个系统的结构以及测试每个功能的可用性等等,主要针对这点,黑盒测试针对软件应用程序界面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com