基于安卓系统源代码手机记帐系统的设计与实现源代码

大牛们是怎么阅读 Android 系统源码的?
最近想去深入学习下底层的东西。看的哪一部分?有没有好的查看工具? 心得体会...
由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少.如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行. 但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. 知识JavaJava是AOSP的主要语言之一. 没得说, 必需熟练掌握.熟练的Android App开发LinuxAndroid基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 12.04. 所以熟练的使用并了解Linux这个系统是必不可少的. 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发. 如果再深入到驱动层, 那么Kernel相关的知识也要具备.MakeAOSP使用Make系统进行编译. 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.GitAOSP使用git+repo进行源码管理. 这应该是程序员必备技能吧.C++Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现). 硬件流畅的国际网络AOSP代码下载需要你拥有一个流畅的国际网络. 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码. 另外, 好程序员应该都会需要一个流畅的Google.一台运行Ubuntu 12.04的PC. 如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置.一台Nexus设备AOSP项目默认只支持Nexus系列设备. 没有也没关系, 你依然可以读代码. 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧.高品质USB线要刷机时线坏了, 没有更窝心的事儿了.软件Ubuntu 12.04官方推荐, 没得选.Oracle Java 1.6注意不要用OpenJDK. 这是个坑, 官方文档虽然有写, 但还是单独提一下.安装:sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
Eclipse估计会有不少人吐槽, 为什么要用这个老古董. 其实原因很简单, 合适. 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最终结果还是Eclipse. 主要优点有: 有语法分析 (快速准确的类, 方法跳转).支持C++ (IntelliJ的C++支持做的太慢了).嵌入了DDMS, View Hierarchy等调试工具.为了提高效率, 花5分钟背下常用快捷键非常非常值得.调整好你的classpath, 不要导入无用的代码. 因为AOSP项目代码实在是太多了. 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃.Intellij IDEA开发App必备. 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了. Itellij IDEA的xml自动补全非常给力.巨人的肩膀AOSP项目官方: 这个一定要先读. 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里. 这是一切的基础.Android官方Training: 这个其实是给App开发者看的. 但是里面也有不少关于系统机制的介绍, 值得细读.老罗的Android之旅: 此老罗非彼老罗. 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程. 你可以按照博客的时间顺序一篇篇挑需要的看.但这个系列的博客有些问题: 早期的博客是基于旧版本的A 大量的代码流程追踪. 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置.Innost的专栏: 邓凡平老师也是为Android大牛, 博客同样很有营养. 但是不像罗升阳老师的那么系统. 更多的是一些技术点的深入探讨.Android Issues: Android官方Issue列表. 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录. 当然你可以提一些新的, 有没有人改就是另外一回事了.Google: 一定要能流畅的使用这个工具. 大量的相关知识是没有人系统的总结的, 你需要自己搞定.其它代码组织AOSP的编译单元不是和git项目一一对应的, 而是和Android.mk文件一一对应的. 善用mmm命令进行模块编译将节省你大量的时间.Binder这是Android最基础的进程间通讯. 在Application和System services之间大量使用. 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口. 这对你理解Android的Application和System services如何交互有非常重要的作用. Binder如何实现的倒不必着急看.HAL除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层.CyanogenMod这是一个基于AOSP的第三方Rom. 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西. 比如如何支持Nexus以外的设备.DIA这是一个Linux下画UML的工具, 能够帮你梳理看过的代码.XDA这里有最新资讯和最有趣的论坛.想到了再补充.
-----------------------------------------------------------------------------------------------------------------这是前言在Android系统源码上摸索4年,说说我的看法:显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看。推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源码,你可以从容在Java,C++,C代码间遨游,你可以很快找到你需要的继承和调用关系。顺便,现在东家是Linux+Samba+Windows的工作模式,Linux+Samba用于代码的同步/编译/管理,Windows做代码编辑。你需要先理解下这个图:Application层就是一个个应用程序,很好理解。Framework提供一个java的运行环境以及对功能实现的封装,简单点说,你家装修总要留很多水电之类的接口吧!Runtime/ART是一个java虚拟机,因为Android上层不是java吗,需要再编译一次成为低级一点的语言识别。从Libraries那些名字也可以看出来,这里有很多高端大气库,它是功能实现区,多媒体编解码,浏览器渲染啊,数据库实现啦,很多很多。Kernel部分负责陪硬件大哥玩,你那些功能实现的区域最终都要调硬件吧,Kernel这家伙已经和硬件很熟了,你就直接通过它来和冷冰冰硬件大哥打交道吧!好了,上面这些内容很好理解对不对,现在的问题是:当你拿到一份几G的源码,该从哪里开始呢?经过上面的前言的洗礼,你应该能够很好理解下面这部分了-------------------------------------------------------------------------------------------------------------------1.宏观上看,Android源码分为功能实现上的纵向,和功能拓展上的横向。在阅读源码时需要把握好着两个思路。譬如你需要研究音频系统的实现原理,纵向:你需要从一个音乐的开始播放追踪,一路下来,你发现解码库的调用,共享内存的创建和使用,路由的切换,音频输入设备的开启,音频流的开始。譬如你要看音频系统包括哪些内容,横向:通过Framework的接口,你会发现,音频系统主要包括:放音,录音,路由切换,音效处理等。2.Android的功能模块绝大部分是C/S架构你心里一定需要有这个层级关系,你需要思路清晰地找到Server的位置,它才是你需要攻破的城,上面的libraries是不是很亲切的样子?看完它长成啥样后,然后你才能发现HAL和Kernel一层层地剥离。很多研究源码的同学兜兜转转,始终在JAVA层上,这是不科学的,要知道libraries才是它的精髓啊。3.Android的底层是Linux Kernel。在理解1,2后,还是需要对Kernel部分有个简单的理解,起码你要熟悉kernel的基础协议吧!你要能看懂电路图吧!你要熟悉设备的开启和关闭吧!你要熟悉调寄存器了吧!这方面的书太多了,我建议根据实例去阅读,它并不复杂,不需要一本本厚书来铺垫。在libraries和kernel间,可能还会有个HAL的东东,其实它是对kernel层的封装,方便各个硬件的接口统一。这样,如果我换个硬件,不用跑了长得很复杂的libraries里面改了,kernel调试好了后,改改HAL就好了。--------------------------------------------------------------------------------------------------------------------好了,你现在是不是跃跃欲试准备去找个突破口准备进攻了,但是好像每个宝库的入口都挺难找了我大概在三个月前阅读完Android UI系统的源码,这是Android最复杂的部分,我要简单说下过程。我需要先找宝库入口,我要研究UI,首先要找什么和UI有亲戚关系吧!View大神跳出来了,沿着它往下找找看,发现它在贴图在画各种形状,但是它在哪里画呢,马良也要纸吧?很明显它就是某个宝藏,但是世人只是向我们描述了它有多美,却无人知在哪里?我们需要找一张地图罗。开发Android的同学逃不掉Activity吧!它有个setcontentview的方法,从这个名字看好像它是把view和activity结合的地方。赶紧看它的实现和被调用。,然后我们就发现了Window,ViewRoot和WindowManager的身影,沿着WM和WMS我们就惊喜会发现了Surface,以及draw的函数,它居然在一个DeCorView上画东西哈。借助Source Insight, UI Java层的横向静态图呼之欲出了。完成这个静态UML,我觉得我可以开始功能实现上追踪了,这部分主要是C++的代码(这也是我坚定劝阻的放弃Eclipse的原因),我沿着draw函数,看到了各个层级的关系,SurfaceSession的控制和事务处理,SharedBuffer读写控制,彪悍的SurfaceFlinger主宰一切,OpenGL ES的神笔马良。FrameBuffer和FrameBufferDevice的图像输出,LCD设备打开后,开始接收FBD发过来的一帧帧图像,神奇吧。好吧,就这样,再往底层我爱莫能助了!
工具:Android Studio查看源码方法: 看那一部分:Framework/basePackage/appsartexternal操作系统:推荐Linux,可以随时编译Android源码测试机:推荐Nexus系列手机,编译源码后push进去可以随时验证。
Android源码两个部分看得最多,一个是packages,就是各个系统应用的实现,另外就是framework,框架层的实现。具体看什么就看你想了解什么。工具eclipse也很好,build一下生成class path,各种转跳非常方便,不需要grep了。
vim+grep. 读任何代码都是一样的. android 并没什么特殊的
我觉得vim+tags已经很爽了,当然要是source insight出个Mac版本就更好了。
两位已经说的很全了,我就稍微补充点 答下题主的问题:最近想去深入学习下底层的东西。看的哪一部分?代码里面的部分,那就学学Linux Kernel,Bootloader,再底层的需要学些硬件驱动,一步一步来。有没有好的查看工具? Windows 下推荐SoureInsight,建个工程把AOSP 所有代码丢进去,几个月不用关掉,看到感兴趣的地方不停的往下追就好。当初就在这上面直接改代码,Ubuntu 开个窗口编译搞定,其实是懒得开IDE(逃
零、准备工作:开发环境:建议在ubuntu(32/64位均可)下进行开发。开发板:推荐cubieboard、pcduino(资料开放,连相应的android源码以及硬件配置文件都有提供。不推荐所谓的开源硬件Raspberry-Pi,毕竟Raspberry-Pi并不是真正的开源硬件。)其他:串口线强烈不推荐在windows环境下搞Android底层开发!!!一个及格的Android工程师,就应该熟练在Linux环境下进行开发工作。如果你不会“优雅”地使用Linux,不得不在windows下编辑代码,恳请你记得设置编码utf-8!!!!!!!!!!(怨念:每次编译固件看见乱码警告就各种强迫症啊摔ヽ(≧Д≦)ノ!尽管大多情况下不影响编译结果。)一、编译器的选择:阅读/编译代码:eclipse (Java)、vim+ctags+cscope(C/C++)搜索代码:shell例如命令1:grep "Telephoney" -rn ./*例如命令2:find -name Telephoney*等等等不会用eclipse,请不要说他不好用!eclipse是阅读framework代码以及系统应用的居家旅行杀人必备神器。正确使用eclipse阅读Android源码:1.复制eclipse的classpath到Android源码根目录cp ~/android/development/ide/eclipse/.classpath ~/android2.修改eclipse缓存设置把eclipse.ini文件的3个值改为下面的值(不要盲目参考,需要根据自己机器情况来定):
-XX:MaxPermSize=512m(mac路径:eclipse/Eclipse.app/Contents/MacOS/eclipse.ini)3.导入eclipse代码风格把android-formatting.xml和android.importorder导入Eclipse~/android/development/ide/eclipse/android-formatting.xml~/android/development/ide/eclipse/android.importorder4.导入Android源码新建Java Project(不是Android project),选择从已存在的工程导入,定位到Android源码的目录进行导入即可。PS:eclipse只是阅读/编辑代码的工具,编译源码还是需要通过make命令在终端编译的。 二、知识储备:编程语言什么的没什么好说。着重提一个:设计模式由于Android源代码用到各种各样的设计模式,如果不会设计模式,将会大大降低你的阅读理解速度。三、网站资料:android官方文档,很详细描述各模块的设计思路。理解这个链接的内容,看个十遍八遍,一边看一边分析代码。PS:由于比较笨(-’?_?’-),所以我当年是一边看一边翻译出来,大家也可以参考我这种方法,容易加深理解、印象四、书刊资料:邓凡平大神的《深入理解Android》系列《深入理解Android:卷I/卷II》 [Kindle电子书] ~ 邓凡平链接:作者Blog:五、学习方法:要一下子把所有模仿都理解透,是件比较困难的事情。可以分模块学习:TelephoneyAudio & mediawebkit & BrowserWi-Fi & wpa supplicantDalvikDisplay & Surface flingerCamera等等等先吃饭,看心情再补(*??v?)。。。
分享自己总结的一些阅读源码的方法,需要注意的几个点可以注意下做什么事情都要知道从那里开始,读程序也不例外。在c语言里,首先要找到main()函数,然后逐层去阅读,其他的程序无论是vb、delphi都要首先找到程序头,否则你是很难分析清楚程序的层次关系。分层次阅读  在阅读代码的时候不要一头就扎下去,这样往往容易只见树木不见森林,阅读代码比较好的方法有一点象二叉树的广度优先的遍历。在程序主体一般会比较简 单,调用的函数会比较少,根据函数的名字以及层次关系一般可以确定每一个函数的大致用途,将你的理解作为注解写在这些函数的边上。当然很难一次就将全部注 解都写正确,有时候甚至可能是你猜测的结果,不过没有关系这些注解在阅读过程是不断修正的,直到你全部理解了代码为止。一般来说采用逐层阅读的方法可以是 你系统的理解保持在一个正确的方向上。避免一下子扎入到细节的问题上。在分层次阅读的时候要注意一个问题,就是将系统的函数和开发人员编写代码区分开。在 c, c++,java ,delphi中都有自己的系统函数,不要去阅读这些系统函数,除非你要学习他们的编程方法,否则只会浪费你的时间。将系统函数表示出来,注明它们的作用 即可,区分系统函数和自编函数有几个方法,一个是系统函数的编程风格一般会比较好,而自编的函数的编程风格一般比较会比较差。从变量名、行之间的缩进、注 解等方面一般可以分辨出来,另外一个是象ms c6++会在你编程的时候给你生成一大堆文件出来,其中有很多文件是你用不到了,可以根据文件名来区分一下时候是系统函数,最后如果你实在确定不了,那就 用开发系统的帮助系统去查一下函数名,对一下参数等来确定即可。重复阅读  一次就可以将所有的代码都阅读明白的人是没有的。至少我还没有遇到过。反复的去阅读同一段代码有助于得代码的理解。一般来说,在第一次阅读代码的时候 你可以跳过很多一时不明白的代码段,只写一些简单的注解,在以后的重复阅读过程用,你对代码的理解会比上一次理解的更深刻,这样你可以修改那些注解错误的 地方和上一次没有理解的对方。一般来说,对代码阅读3,4次基本可以理解代码的含义和作用。运行并修改代码  如果你的代码是可运行的,那么先让它运行起来,用单步跟踪的方法来阅读代码,会提高你的代码速度。代码通过看中间变量了解代码的含义,而且对 以后的修改会提供很大的帮助  用自己的代码代替原有代码,看效果,但在之前要保留源代码  600行的一个函数,阅读起来很困难,编程的人不是一个好的习惯。在阅读这个代码的时候将代码进行修改,变成了14个函数。每一个大约是40-50 行左右.———————————————源码下载网站—————————————————————跟你说几个我常用的源码下载网站csdn()它是集新闻、论坛、群组、Blog、文档、下载、读书、Tag、网摘、搜索、.NET、Java、游戏、视频、人才、外包、第二书店、《程序员》等多种项目于一体的大型综合性IT门户网站,源码只是其中的一项,但是很实用 里边有很多大牛。DevStore()主要是开发者服务平台,汇集国内外众多第三方开发者服务,为开发者提供从设计开发到运营推广一站式的解决方案,源码和服务评测也是亮点,很专业,很实用,这里边聚集的都是开发者和PM,可以看看。站长之家()针对个人站长,企业网管提供的资讯和源码,包含的语言和类型也比较多。
因为工作原因,接触 Android 源码并且折腾的很早,也因为工作原因,无法有效的利用各种 IDE, 所以一直是用 VIM + grep 的方式。效率可能比较低下,但是读源码这种东西就是贵在坚持学习,看的时间长了,慢慢哪些代码在什么地方都大概能有印象,所以读和找起来就很方便。蛮羡慕会用 taglist 的,只是一直不大习惯使用。再有比较关键的一点是多找一些身边喜欢学习的朋友交流,每个人看的可能都不一样,很多时候突破口就在抽烟聊天的时间讨论出来的。
已有帐号?
无法登录?
社交帐号登录需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金11.11大促流量暴涨,销量翻倍的方法
基于Android源码开发一款IOS App 考试系统
有相似问题想解决?专业顾问来帮助您
匹配服务商
选择服务商,签单
服务商工作
验收并付款
已投标服务商
综合评分:5颗星
速度:5.00
服务:5.00
态度:5.00
好评率:100%
共有4个服务商参与报价,查看更多服务商报价
参与报价,开始赚钱
提交你的报价和方案
中标后交付作品
获得任务赏金
极速:10分钟急速响应
高品质:精选服务商提供服务
放心:不满意可退款
APP成品套餐
APP成品源码套餐
交易成功的需求
APP开发相关需求相关图书推荐
定价:30.00
定价:32.00
定价:32.00
定价:28.00
定价:35.00
书店排行榜
当前共有:字
提示:分享时会自动附带图书的链接地址与封面图片。
jQuery("#pageDivUser").html("");
bind_UserCommentsList(mtype, pageindex);
jQuery("li[name='tiu']").removeClass("current2");
jQuery("#" + "tab_userli" + mtype).addClass("current2");
function bind_UserCommentsList(mtype,pageindex){ //绑定网店网友评论
var pagesize = 5;
jQuery.getJSON('/AjaxBookNoUser.ashx?___time=' + Math.random(), { ___type: 'Get_CommentsBookUserList', bookid: bookid, mtype: mtype, pageindex: pageindex, pagesize: pagesize }, function (result) {
if (result != "0" && result != "-1") {
var html = "";
jQuery.each(result.list, function (i, item) { //绑定Table 0 地址
1标题 2 源 3 时间
var t = "";
t += "{0} ";
t += "{2}";
t += "{5}{3}";
var ibuy = "未购买用户:";
if(item.isbuy ==1){
ibuy="已购买用户:";}
t = t.format(item.title,item.content,item.date,ibuy);
jQuery("#book_usercm_list").html(html);
if (result.page.icount > pagesize){ //绑定分页
bind_pager(mtype, pageindex, result.page.pcount,'bind_UserCommentsList','pageDivUser');
jQuery("#book_usercm_list").html("暂时没有书评信息。");
function set_CommentsTab(mtype, pageindex) {
jQuery(".book_comms_tab").html("正在加载中请稍后...");
jQuery("#pageDiv").html("");
bind_CommentsList(mtype, pageindex);
jQuery("li[name='ti']").removeClass("current2");
jQuery("#" + "tab_li" + mtype).addClass("current2");
function bind_CommentsList(mtype, pageindex) {//绑定书评
var pagesize = 15;
jQuery.getJSON('/AjaxBookNoUser.ashx?___time=' + Math.random(), { ___type: 'Get_CommentsInfoLits', bookid: bookid, mtype: mtype, pageindex: pageindex, pagesize: pagesize }, function (result) {
if (result != "0" && result != "-1") {
var html = "";
jQuery.each(result.list, function (i, item) { //绑定Table 0 地址
1标题 2 源 3 时间
var t = "{2}{3}";
t = t.format("/bookview/" + bookid + "/" + item.PubYear + "/" + item.GUID, item.Title, item.Source, item.PubDate.split(' ')[0]);
jQuery(".book_comms_tab").html(html);
if (result.page.icount > pagesize){ //绑定分页
bind_pager(mtype, pageindex, result.page.pcount,"bind_CommentsList","pageDiv");
jQuery(".book_comms_tab").html("暂时没有书评信息。");
function bind_pager(m, p, c,f,d) {//分页 m-type p-index c-count f-function d-control
var phmb = "&"
var ph = "";
var pi = parseInt(p);
var ci = parseInt(c);
var first = ((pi - 1) == 0) ? 0 : (pi - 1);
if (first > 0) {
if (c > 8) { ph += phmb.format("", m, 1, "首页",f); }
ph += phmb.format("", m, first, "上一页",f);
for (var j = ((pi - 4) > 1) ? (pi - 4) : 1; (j <= ci) && (j
1) ? (pi - 4) : 1) + 8)); j++) {
if (j == pi) {
ph += phmb.format("class=\"aspNetDisabled\"", m, j, j,f);
ph += phmb.format("", m, j, j,f);
var last = ((pi + 1) > ci) ? (ci + 1) : (pi + 1);
8) { ph += phmb.format("", m, ci, "尾页",f); }
jQuery("#"+d).html(ph);您的位置:
基于手机感知的视力测量系统的设计与实现
基于手机感知的视力测量系统的设计与实现
The Design and implementation of a vision test system based mobile sensing
发布时间:  浏览量:58  收藏数:0  评论数:
北京邮电大学网络与交换技术国家重点实验室,北京 100876;
本文首先介绍了智能手机中部署的传感器以及它的应用领域和发展趋势,然后给出该视力测量系统的概要设计并详细的介绍了该系统在android平台上的设计与实现,该系统主要包括三个模块:测试图形设计,手势图像获取和识别分析。本文重点讨论了这三个模块实现的关键技术,最后对该系统进行了测试。
传感器;视力测量;手势图像;手势识别
ZOU Shihong*
State Key Laboratory of Networking and Switching, Beijing University of Posts and Telecommunications, Beijing 100876;
Abstract:
In this paper, firstly, it simply introduces the multiple sensors on mobile device, and the applied area and developing tendency. Then it shows the design and implementation of system on android platform. This system include three modules: the design of test picture, the obtain of gesture image and gesture recognize. The article mainly discusses the key technologies that implement in these modules, at last, we will test the system.
Keywords:
gesture recognize
PDF全文下载:
&&&&(16)
作者简介:
李都,(1988-),男,硕士研究生,移动计算机和移动信息安全
通信联系人:
邹仕洪,(1978-),男,北京邮电大学网络与交换技术国家重点实验室 副教授,移动计算机和移动信息安全
【收录情况】
中国科技论文在线:李都,邹仕洪.&基于手机感知的视力测量系统的设计与实现[EB/OL].北京:中国科技论文在线&
[].http://www./releasepaper/content/.
发表期刊:
首发论文搜索
&> 信息科学与系统科学
&> 地球科学
&> 畜牧、兽医科学
&> 基础医学
&> 临床医学
&> 预防医学与卫生学
&> 军事医学与特种医学
&> 中医学与中药学
&> 工程与技术科学基础学科
&> 测绘科学技术
&> 材料科学
&> 矿山工程技术
&> 冶金工程技术
&> 机械工程
&> 动力与电气工程
&> 能源科学技术
&> 核科学技术
&> 电子、通信与自动控制技术
&> 计算机科学技术
&> 化学工程
&> 纺织科学技术
&> 食品科学技术
&> 土木建筑工程
&> 水利工程
&> 交通运输工程
&> 航空航天科学技术
&> 环境科学技术
&> 安全科学技术
&> 图书馆、情报与文献学
&> 体育科学
尊敬的作者,欢迎您在本站投稿:
注:请投稿作者直接在本站注册并登录提交文章,
任何个人或机构宣称代理在本站投稿均为侵权行为
本学科今日推荐
本文作者合作关系
本文相关论文
计算机科学技术基计算机科学技术基计算机科学技术计算机科学技术数据安全与计算机
&&&&&&&&&&&&&&
中国科技论文在线
&|&&|&&|&&|&&|&nbsp
计算机科学技术基础学科
计算机系统结构
计算机软件
计算机工程
计算机应用
计算机科学技术其他学科
基于手机感知的视力测量系统的设计与实现
&&收藏本文
&&推荐本文给好友
&&订阅本文所在学科
&&分享到我的圈子
多个邮箱请用逗号“,”隔开
分享到我的圈子(毕业设计)基于android的课程表开发的设计与实现(整理版)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
(毕业设计)基于android的课程表开发的设计与实现(整理版)
上传于||文档简介
&&电&#8203;子&#8203;信&#8203;息&#8203;毕&#8203;业&#8203;设&#8203;计&#8203;论&#8203;文
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 安卓系统源代码下载 的文章

 

随机推荐