基于Android的手机计步器的设计与实现+源代码.doc
《基于Android的手机计步器的设计与实现+源代码.doc》由会员分享,可在线阅读,更多相关《基于Android的手机计步器的设计与实现+源代码.doc(57页珍藏版)》请在咨信网上搜索。
专业工程综合实训设计报告 55 目 录 第一章绪论1 1。1课题的背景及意义1 1。2系统框架1 第二章系统分析3 2。1 系统可行性分析3 2。1.1 功能可行性分析3 2.1。2 运行环境可行性分析3 2。2 开发环境简介3 2。2。1 Java Development kit(JDK)介绍3 2。2。2 Android SDK 介绍3 2.2。3 Eclipse开发工具介绍4 2。2.4 Android Development Tools(ADT)介绍4 第三章 Android开发常用到的技术及环境搭建4 3。1 Android开发常用到的技术4 3.1。1 Activity4 3.1。2 Service6 3。1.3 Content Provider 内容提供者6 3。1。4 Intent 信使6 3.2环境搭建6 3。2。1安装JDK6 3。2。2安装Eclipse7 3。2。3 Android SDK安装7 3.2.4 ADT安装7 第四章手机计步器的设计与实现8 4。1计步器功能的设计8 4。2计步器功能的实现10 4.2。1 计步开始及暂停10 4.2.2 复位键11 4。2。3设置步长11 4。2。4设置体重11 4。2。5历史记录的查看及删除12 第五章计步器的界面效果16 5。1用户界面16 5。2设置界面17 5。3历史界面20 5.4日历选择界面21 5。5用户离开界面22 第六章系统测试与分析23 6。1 测试过程23 6.2 测试分析36 结论36 参考文献37 第一章 绪论 1。1课题的背景及意义 当今社会,手机已经成为人们工作生活中必不可少的一项通讯和娱乐工具,随着手机的不断更新,手机的各种高层服务和应用层出不穷。现在智能手机可谓是爆发式增长,与此同时传统手机在不断地消失,诺基亚就是在这样的环境中受到了重创。现在主要有三个使用率和关注度最高的手机平台,分别是:Android,ios和windows phone平台,在这三个平台中Android的占有率最高.自2007年11月Google公司发布Android系统以来,短短几年时间,Android已经占据了智能手机市场的半壁江山,成为目前最为炙手可热的智能手机操作系统。Android走进了越来越多人的生活,成为他们获取信息的主要平台。 Android平台对于Google和用户的意义不在于手机本身,而在于为了推动移动互联网产业链的迅速成型.具有开源性的Android手机平台与之前Symbian、windows mobile等操作系统不同,它们收取高额的授权费用,而Android不需要,这样使得应用开发成本大大降低;也正是由于它的源代码是开放的,使得开发者可以随心所欲的开发应用.同时,手机生产商和软件开发商也能够在这里得到利润,手机软件得到有效的维护协调发展。这正是Google发布Android平台的意义,也是Android平台的使命所在. 同时目前搭载Android平台的应用有很多,但针对传感器而开发的应用市场上还不多见.本应用正是针对Android手机内置的加速度传感器而特别设计的应用.所以鉴于移动端应用开发是目前软件开发行业正在兴起并会越来越炙手可热的一个分支,并且针对传感器的开发相对空白我选择了研究此课题。 1。2系统框架 在设计一款软件时一般都会把它分成几个模块,在模块的基础上还会再分小模块,这样就达到了软件模块化设计的要求,然后再对各个小模块进行详细设计和编写,采用模块化的管理方式可以使软件结构更清晰,也使得软件的管理更有秩序,使别人容易理解和阅读,但是这些模块也要根据别的模块来设计和约束,不能随便设计脱离框架,设计完成后需要把每个设计完成的模块根据总体框架结合起来。 根据本软件的功能需求,将本软件分为以下几个功能模块,如图 1-1所示: 主界面 步数 公里 暂停/开始 卡路里 设置 走过的总步数 走过的总长度 开始/暂停运动 运动所消耗的能量 复位 所有数据清零 选择日期 日期 步长 体重 设置用户步长 设置用户体重 结束 关闭应用软件 历史 查看历史记录 删除历史记录 保存 保存记录 图1—1 整体框架图 第二章 系统分析 2。1 系统可行性分析 可行性分析(Feasibility Analysis)也称为可行性研究,是在系统调查的基础上,针对刚刚开发打算进一步应用的系统的必要性和可能性的分析和研究.可行性研究的目的主要在于,用最小的代价在尽可能短的时间内确定问题是否能够解决。[1] 该阶段通过对系统总目标的初步调研与分析,提出可行性方案并进行论证。 2.1.1 功能可行性分析 1、计步功能:根据用户设置的步长和体重,估算用户步行运动所消耗的热量.当距离发生改变时在前台界面上刷新用户步行的步数、距离、和消耗的卡路里;该计步功能还实现了Notification后台运行的功能. 2、设置参数功能:设置用户的步长、体重2个参数信息.通过设置体重可以估算出不同体重的人运动所消耗的卡路里量. 3、退出系统功能:当用户想终止计步软件时,可以点击退出菜单后退出本系统。 4、历史记录功能: 用户可以查看以往的历史记录。 5、保存功能: 有户可以保存当天的运动量,以便之后查看. 2.1.2 运行环境可行性分析 本软件是在windows 7 操作系统中,利用Eclipse 开发工具搭载Android SDK工具包,结合Android手机自带的sqlite数据库进行开发。 2。2 开发环境简介 2。2.1 Java Development kit(JDK)介绍 JDK是Java语言的软件开发工具包。本应用用的是JDK的J2ME版,它主要用于移动设备、嵌入式设备上的Java应用程序.没有JDK的话,无法编译Java程序,所以这是开发Java程序必须安装的工具。 2.2。2 Android SDK 介绍 SDK(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合.因此,Android SDK指的是Android专属的软件开发工具包。 2.2.3 Eclipse开发工具介绍 Eclipse是一个开放源代码的、基于插件的可扩展性平台。也可以说它只是一个框架和一组服务,用于通过插件组件构建开发环境.Eclipse附带了一些标准的插件集,包括Java开发工具(JDK). 本次应用就是将Eclipse当作Java集成开发环境来使用,但是它的作用并不仅仅如此。由于Eclipse中的每样东西都是插件,所以只要有插件就可以使用它,因而不仅仅是Java语言,C/C++、PHP等语言也可以使用Eclipse。 2。2.4 Android Development Tools(ADT)介绍 目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具. ADT扩展了Eclipse的功能,让我们能快速建立新的Android项目、创建应用程序的用户界面。它可以帮助Eclipse找到Android SDK,再加上Android框架的API组件调试使用Android SDK工具,以便APK分发给应用程序。同时大大减轻了Android应用程序的开发工作量,工具集成XML编辑器,将给开发者一个令人难以置信的开发Android应用环境。当然如果你不用Eclipse作为你的开发工具,你就不需要下载ADT, 只下载SDK即可开发.[2] 第三章Android开发常用到的技术及环境搭建 3。1Android开发常用到的技术 3。1。1 Activity Activity是Android应用程序开发中最重要的组件.一个Activity提供一个屏幕,用户可以用来交互以完成某项任务,例如点击、拍照、拨号等.它是用户与应用交互的直接且最重要的组件。 Activity生命周期可以用几个函数说明: onCreate():Activity开始创建时调用; onStart():在Activity开始执行时调用,这时Activity已经可见; onResume():在Activity获得用户焦点时调用,此时Activity可以和用户交; onPause():在Activity被暂停时调用,失去用户焦点,但没有被摧毁; onStop():在Activity被停止时调用,此时Activity已经不可见,但仍然没有被摧毁; onRestart():在Activity被重新启动时调用; onDestory():在Activity被彻底摧毁时调用. 下面用一张图来解释Activity的生命周期在各函数之间的跳转。如图3—1: 图3—1 Activity的生命周期图 3.1。2 Service 一个Service是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。一个很好的例子就是用手机在播放音乐时,用户可以进行其它应用的活动而此时并没有播放音乐的界面,但是音乐在后台播放并不受影响,这就是Service的功劳。还有就是闹钟提醒,当你设置好闹钟后并不需要一直显示在闹钟那个界面,甚至手机也可以关掉但是只要时间到了,闹钟依然可以提醒,这也是Service的作用。 3。1.3Content Provider 内容提供者 android平台提供了Content Provider,它是一个应用程序的指定数据集提供数据给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。本文用到了文件存储和Shared Preferences的存储方式。 文件存储大家都很熟悉,就是以文件为操作对象,向文件中写入或读取数据.Shared Preferences可以将数据保存到应用程序的私有存储区,这些存储区中的数据只能被写入这些数据的软件读取。它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.例如:登陆时用到的用户名和密码。 3。1.4 Intent 信使 Intent 也是Android开发者比较重要的一部分,它主要用来解决Android应用的各项组件之间的通讯,被称为Android应用中的信使。 Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。所以它常被用来启动一个Activity或Service,[3]例如当从一个Activity启动另一个Activity时,可以这样操作,Intent intent=new Intent();intent.setClass(startActivity。this,s econdActivity。class);this。startActivity(intent)。 3。2环境搭建 首先要有一台安装有Windows系统的计算机,接下来就是安装过程。 3。2.1安装JDK 下载JDK,在这里 1. 我的电脑—>属性—〉环境变量—>系统变量; 2. JAVA_HOME值为:D:\Program Files\jdk(你安装JDK的目录); 3. CLASSPATH 值为:;%JAVA_HOME%\lib\tools。jar;%JAVA_HOME%\lib\dt.jar; %JAVA_HOME\bin; 4. Path:在开始追加%JAVA_HOME\bin; 如果安装成功,打开cmd窗口,输入java-—version会出现如图3—1显示的信息: 图 3—1 JDK安装成功提示信息 3.2。2安装Eclipse 下载Eclipse,这里是网址http://www。eclipse。org/downloads/解压后即可使用. 3。2。3 Android SDK安装 在Android Developers下载最新版本的压缩包,下载完成后解压到任意路径,运行SDK Setup。exe。选定你要安装的内容。这里也需要配置环境变量,在用户变量中新建PATH值为:Android SDK中的tools绝对路径.[5] 3。2。4 ADT安装 打开Eclipse IDE,点击菜单中的“Help”然后点击“Install New Software”,再点击Add。..按钮,这时会弹出一个对话框要求输入,Name和Location:Name项可以自己随便填取,Location输入http://dl-ssl。 with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,选定他们.然后按要求一步一步next,完成之后,这个过程可能会很慢。这取决于网络环境。最后选择Window—>Preferences..。在左边的面板选择Android,然后再右侧点击Browse,并选中SDK路径。点击Apply,到此就配置完成了[6]. 第四章 手机计步器的设计与实现 4。1计步器功能的设计 软件采用最主流的Android软件应用开发风格,并使用Android的原生组件进行开发,界面友好,简洁易懂,组建布局具有诱导性,用户使用极其方便快捷。 1、主界面操作流程见图4-1: 开始计步 计步暂停 计步清零 开始 图4—1 图为主界面操作流程图 2、设置界面操作流程见图4—2: 主界面 设置 体重 步长 图4-2 图为设置界面操作流程图 3、日历选择界面操作流程见图4-3: 主界面 日历 选择日历 图4—3 日历选择界面操作流程图 4、历史界面操作流程见图4—4: 主界面 历史 查看 选择范围 删除 图4—4 历史界面操作流程图 5、复位界面操作流程见图4—5: 主界面 复位 清空数据 图4-5 复位界面操作流程图 6、关闭程序界面操作流程见图4-6: 主界面 关闭 结束程序 图4—6 关闭程序界面操作流程图 4。2计步器功能的实现 计步器的主要功能有:计步开始/暂停,设置,显示运动所消耗的卡路里,走过长度。本软件是一个结合手机用户特别是智能手机用户常用功能的一个软件平台,本软件可以通过界面快速获取运动的情况,获取信息后可以对这些信息进行个性化处理以方便用户直观的感受运动量。 4。2。1计步开始及暂停 首先对暂停/ 开始键做一个监听start_pause_button。setOnClickListener(new View。OnClickListener() 同时还要对此时状态做一个判断 start_pause_button.setText(mIsRunning ? R。string.pause : R.string。resume); 若初始状态为记录则显示暂停,若初始状态为非记录状态则显示开始。 4.2。2 复位键 对清零按钮做一个View即: resetButton = (Button) findViewById(R。id。reset_button); 实现清零的语句很简单,对“开始”键做一个监听,当用户点击“开始”键时,即: resetButton.setOnClickListener(new View.OnClickListener()[7] 执行一下命令: { public void onClick(View v) { resetValues(true); } }; 这样记录数据清零的按钮就完成了。 4。2。3设置步长 对于设置步长,首先要获取用户所输入的步长信息: return Float。valueOf(mSettings。getString(”step_length”, ”70") 若用户未对步长信息进行编辑,则默认为70. 在DistanceNotifier中使用mStepLength来计算走过的距离: mDistance = mDistance + (float) (mStepLength / 100000。0); notifyListener(); 4。2.4设置体重 对于设置体重,首先要获取用户所输入的体重信息: return Float。valueOf(mSettings.getString(”body_weight”, ”50" 若用户未对步长信息进行编辑,则默认为50. 在CaloriesNotifier中使用mBodyWeight来计算用户因运动所消耗的卡路里: mCalories += (mBodyWeight * (mIsRunning ? METRIC_RUNNING_FACTOR : METRIC_WALKING_FACTOR)) * mStepLength / 100000.0; notifyListener(); 4。2。5历史记录的查看及删除 publicclass View1 extends Activity{//使用ActionBarActivity出现闪退不能运行, 可以使用 Activity private ListView list; private Button btnBack,btnForward; privateint mYear,mMonth,mDay; private TextView tvTitle; String[] from; String today; int[] to; int _id; SimpleCursorAdapter mAdapter; DataBase db; Cursor cur; @Override protectedvoid onCreate(Bundle savedInstanceState) { super。onCreate(savedInstanceState); setContentView(R.layout。view1); db=new DataBase(this); db。CreatTable_amount(); list=(ListView)findViewById(R.id。listView1); Calendar c = Calendar. getInstance(TimeZone。getTimeZone("GMT+08:00")); mYear = c。get(Calendar.YEAR); mMonth = c。get(Calendar.MONTH)+1; mDay=c。get(Calendar。DAY_OF_MONTH); if(mMonth<10) {today = mYear + ”-" + "0”+mMonth;} else {today=mYear+"—”+mMonth;} cur=db。getAmount(today); from=new String[]{”date”,”Distance”}; to=newint[]{R。id。textView1,R。id。textView2}; cur=db。getAmount(today); mAdapter = newSimpleCursorAdapter(this, R.layout.items, cur,from, to); list.setAdapter(mAdapter); list。setOnItemLongClickListener(new OnItemLongClickListener() { @Override publicboolean onItemLongClick(AdapterView <?〉 Vparent, android.view.View view, int position, long id) { // TODO Auto—generated method stub _id=(int)id; new AlertDialog。Builder(View1.this)。setTitle("提示ʾ”).setMessage( ”确定删除该细节?")。setIcon(R。drawable。ic_launcher)。setPositiveButton(”确定”, new DialogInterface。OnClickListener() { publicvoid onClick(DialogInterface dialog, int whichButton) { //Log。v("",”"+_id); db。delAmount(_id); mAdapter。changeCursor(cur); ((SimpleCursorAdapter) mAdapter).notifyDataSetChanged(); finish(); System.out.println("ok"); list.setAdapter(mAdapter); } })。setNegativeButton("取消", new DialogInterface.OnClickListener() { publicvoid onClick(DialogInterface dialog, int whichButton) { } }).show(); returnfalse; } }); tvTitle=(TextView)findViewById(R。id。tvTitle); tvTitle。setText(mYear+”-”+mMonth+"-"+"01"+”—-—”+mYear+”—”+(mMonth+1)+”—"+”01");// if(mMonth==12) { tvTitle。setText(mYear+"—"+mMonth+"—"+”01"+”——-”+(mYear+1)+”—”+1+"—”+"01"); } elseif(mMonth〉12) { mMonth=1; mYear=mYear+1; tvTitle。setText(mYear+"-”+mMonth+"-”+”01”+”--—"+mYear+”-"+(mMonth+1)+”—”+"01"); }// btnBack=(Button)findViewById(R。id.btnBack); btnForward=(Button)findViewById(R.id.btnForward); ButtonListener buttonlistener =new ButtonListener(); btnBack.setOnClickListener(buttonlistener); btnForward。setOnClickListener(buttonlistener); } class ButtonListener implements OnClickListener { publicvoid onClick(android。view。View v) { switch(v。getId()) { case R.id。btnBack:leftView(); break; case R。id。btnForward:rightView(); break; } } privatevoid rightView() { Calendar c = Calendar. getInstance(TimeZone.getTimeZone(”GMT+08:00”)); mMonth ++; tvTitle.setText(mYear+”-”+mMonth+"—"+”01”+"———"+mYear+”—”+(mMonth+1)+"-”+"01”); if(mMonth==12) { tvTitle.setText(mYear+”—”+mMonth+"—"+”01"+”---”+(mYear+1)+"-"+1+"—"+”01”); } elseif(mMonth〉12) { mMonth=1; mYear=mYear+1; tvTitle。setText(mYear+”—"+mMonth+”-”+"01"+"-——"+mYear+”—"+(mMonth+1)+”—”+”01"); } if(mMonth<10) {today = mYear + ”—" + "0"+mMonth;} else {today=mYear+”—”+mMonth;} cur=db。getAmount(today); mAdapter.changeCursor(cur); ((SimpleCursorAdapter) mAdapter).notifyDataSetChanged(); } privatevoid leftView() { mMonth=mMonth-1; if(mMonth<1) { mMonth=12; mYear=mYear—1; tvTitle.setText(mYear+”—”+mMonth+”—"+"01”+”——-”+(mYear+1)+”—"+”1"+”—"+”01"); } elseif(mMonth〉=12) { mMonth=1; mYear=mYear+1; tvTitle.setText(mYear+"—”+mMonth+”-"+”01”+"———”+(mYear+1)+”—”+"1”+”-”+"01”); } else tvTitle。setText(mYear+”—"+mMonth+"—"+"01”+”-——”+mYear+”-"+(mMonth+1)+”-”+"01"); if(mMonth〈10) {today = mYear + ”—” + "0”+mMonth;} else {today=mYear+”-"+mMonth;} cur=db。getAmount(today); mAdapter.changeCursor(cur); ((SimpleCursorAdapter) mAdapter)。notifyDataSetChanged(); } } } 第五章 计步器的界面效果 5.1用户界面 图 5—1 用户主界面 5.2设置界面 图5—2 设置体重界面 图5-3 设置步长界面 5。3历史界面 图5-4 记录历史界面 5。4日历选择界面 图5-5 日期选择界面 5。5用户离开界面 图5—6 用户离开界面 第六章 系统测试与分析 6.1 测试过程 1) 点击应用图标,如图 6-1所示: 图6-1 图为计步器主界面 2) 计步器主界面开始记录数据,如图 6—2所示: 图6-2 图为计步器主界面 3) 在主界面点击暂停,如图 6-3所示: 图6—3 图为停止计步界面 4) 继续运动观察主界面数据是否有变化,如图 6—4所示: 图6—4 图为停止计步后仍在运动界面 5) 进入体重设置界面,如图 6—5所示: 图6—5 图为体重设置界面 6) 进入步长设置界面,如图 6—6所示: 图6—6 图为步长设置界面 7) 选择日期界面,如图 6—7所示: 图6—7 图为日期选择界面 图6—8 图为日期选择后的界面 8) 历史界面,如图 6—9所示: 图6—8 图为历史界面 9) 历史查询界面如图 6-9所示: 图6-9 图为历史查询界面 10) 历史删除界面 如图 6—10所示: 图6-10 图为历史删除界面 图6-11 图为历史删除后的界面 11) 退出程序界面 如图 6—12所示: 图6—12 图为退出程序界面 6。2 测试分析 本软件中几个模块的功能经过测试,均测试通过,测试结果和最初的设计基本一致,所有的功能均能正常运行,软件需要比较特殊的运行环境,首先手机的重力感应功能必须有,而且Android系统的版本过低将不能使用。至此基于安卓平台的手机计步器的设计基本完成。 结 论 经过了数月的努力,Android平台手计步器软件终于完成了。本软件能实现用户对计步器的基本要求.方便用户开启关闭计步器,对运动情况和运动量可以直观的从主界面获取信息,设置选项中的智能人机交互平台也可以明了的对用户信息进行编辑,不需要复杂的操作不需要学习,一目了然。对于智能手机用户来说,基于安卓平台的手机计步器提供了一个快捷方便的平台。为用户提供随时随地的服务,节省用户不必要的资金消耗与时间消耗是本软件设计的一个宗旨,整个框架和细节的设计都是围绕这个宗旨进行的,虽然整个软件还不是很成熟,还有很多不足和需要改进的地方,或者还有很多信息提供不到位,例如我们可以加入音乐播放模块,是用户在运动的同时享受轻松快乐的环境,这些还需要日后慢慢优化和改善,但是最初的设计都实现了。 在现在的功能基础上本软件可以进行扩展升级。本软件最初设计的时候就是一个可以扩展的框架,所以为将来加入新的功能提供了很大的方便。本软件虽然不是很强大,但是是我自己亲手编写的,开发一个能在时下最流行的软件,使之顺利的在平台上运行是一件令人兴奋的事情。把自己的想法一步一步地付诸实践,最后成为一个真实的实物,被别人使用和称赞,此时得到的成就感是尤为强烈的。 参考文献 [1] 高焕堂。Google Android应用程序框架原理与程序设计。 http://download。 [2] E2ECloud工作室著.深入浅出Google Android[M].北京:人民邮电出版社,2009-08—1. [3] Android API。chm.http:// 2010—04-10. [4] 王家林.大话企业级Android应用开发实战[M].电子工业出版社,2011,8 [5] 差沙。用Android手机开发应用。程序员。2008. [6] 万玛,宁关永,韩相军。嵌入式数据库典型技术SQLite和Berkeley的研究。微计算机信息,2006。 [7] 马越.Andriod的架构与应用.北京:中国地质大学,2008. [8] 高昂,冯大祥等。Google Android 开发入门与实践.北京:人民邮电出版社,2009. [9]张孝祥著.java就业培训教程[M].北京:清华大学出版社,2007。 [10]Michael McRoberts著,杨继志,郭敬译。 Arduino从基础到实践[M]。 北京:电子工业出版社,2013。 附录: 1。启动界面 import android。app。Activity; import android。annotation。SuppressLint; import android。content。Intent; import android。os。Bundle; import android。os。Handler; import android.os.Message; //import android。support。v7.app。ActionBarActivity;////// import android。widget。ImageView; import android.widget.TextView; public class Welcome extends Activity {//ActionBarActivity 可以使用 Activity private Handler mHandler = new Handler(); ImageView imageview; TextView textview; int alpha = 150; int b = 0; @SuppressLint({ "NewApi", "HandlerLeak” }) @SuppressWarnings("deprecation”) @Override protected void onCreate(Bundle savedInstanceState) { super。onCreate(savedInstanceState); setContentView(R。layout。welcome); imageview = (ImageView) this。findViewById(R。id。imageView1); imageview。setImageAlpha(alpha); new Thread(new Runnable() { public void run() { while (b 〈 2) { try { if (b == 0) { Thread.sleep(1000); b = 1; } else { Thread.sleep(50); } updateApp(); } catch (InterruptedException e) { e。printStackTrace(); } } } })。start(); mHandler = new Handler() { @Override public void handleMessage(Message msg) { super。handleMessage(msg); imageview.setAlpha(alpha); imageview.invalidate(); } }; } publ- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 手机 计步器 设计 实现 源代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文