`
阅读更多

以下是开源项目


1、andbatdog电池监控  难度系数最小
Android BatteryDog 是 Android 平台上用来监控电池电量的服务软件,它生成电池记录文件:/sdcard/BatteryDog/battery.csv,该文件包含时间、电量信息、温度和电压以及一些简单的图形。
项目就四个源码文件:
BatteryDog_Service
继承了服务Service(后台运行和跨进程访问)
创建了一个线程负责输出信息到文件
注册了广播接收器ACTION_BATTERY_CHANGED
BatteryDog
继承了Activity 布局battery_dog 文件
主要负责启动/关闭服务Service 和分析数据然后相关控件显示出来
BatteryGraph
继承了Activity  动态布局
显示相关画面
Log  负责输出显示信息

2、Droid Wall 手机防火墙
Droid Wall - Android Firewall 是一个类似于 Linux 下的iptables 的 Android 手机防火墙软件,允许你限制某些应用访问数据网络,包括 2G/3G 以及 Wi-Fi。
项目共六个文件:
Api 包含共享的编程接口。处理所有ip(可用)的“沟通”这个类别。 这是很重要的类。
BootBroadcast   广播接收机,设置在系统启动时的iptables规则。这是必要的,因为这些规则是不持久的。
HelpDialog对话框中显示的“帮助”菜单选项被选中时。
MainActivity 主界面  功能实现部分
PassDialog对话框中显示要求输入密码。
StatusWidget 构件实现的ON / OFF 部件状态


3、jchat4android手机聊天程序 (内含开发文档)
Android jChat 是一个 Android 手机上基于位置的聊天软件,采用P2P通讯机制。
为了编译jChat,你要使用Eclipse创建一个新的Android项目,然后添加外部JAR和移动的jChat目录选择到libs目录JadeLeapAndroid.jar库。jChat使用了的MapView访问谷歌地图数据。
本项目有25个目标文件。项目里面有代码注释以及开发文档。


4、zz-doctor中医大夫助理信息系统
辅助中医大夫储备药方、药名药理备查。让大夫能腾出精力集中诊断分析, 而不必消耗精力去记忆琐碎的细节。平时有空方便时自己录入储备或完善经验方。 更有利于传承。
系统架构设计:1. PDA: GUI(Android) +Embedded DB (SQLite) ;2. (可配置)定期提示大夫备份数据到附加储存卡。
本项目有17个目标文件。
DbHelper 负责数据库的管理 功能有 执行sql语句 以及 升级等
ZZ  程序全局类 继承Application
MedicineDetail 医药详情介绍
MedicineQuery 医药的查询
RxRecipeDetail 接收方详情
RxRecipeDetailEdit  接收方编辑详情
WelcomeRxRecipeQuery 欢迎接收方查询
IdentifiedString 标识结构类
IdentifiedAutoCompleteTextView 自动匹配标识的信息
IdentifiedStringAdapter 标识信息适配器
UnitAdapter  单位组适配器
ZzUtil  单位类
MedicineSQLBuilder 医药数据库管理类
RecipeMedicineMapSQLBuilder 接收方医药信息对应的数据库类
SQLBuilder  数据库编辑器 根据参数选择不同的编辑方式 含main方法
SubjectSQLBuilder 项目数据库的编辑器

由上分析可以得出,该软件实现了数据库的操作,界面布局不复杂。

 

5、一款查询软件(身份证号,号码归属等)源代码 (个人觉得这是一款开源软件)
此实例非常好,非常使用,在开发中可以借鉴啊。
本项目有24个目标文件。
BaseActivity  头部bar的布局
BaseLayout    头部bar的布局
DataListHolder  就两个成员ImageView TextView 你说干嘛呢
ItemAdapter  继承适配器
QueryAddress 继承BaseActivity 实现地址查询
QueryIDCard  继承BaseActivity  实现身份证查询
QueryPhone  继承BaseActivity  实现手机号查询
SmallToolsActivity继承BaseActivity 实现主界面布局
Splash 继承Activity 实现闪烁延时效果
UpdateApp 一个确定版本信息升级的类
ApiImpl Api接口 实现了地址查询 身份证查询 手机信息查询 更新信息查询 网络请求的功能
AddressInfo 定义了一个地址信息结构类
AppUpdateInfo定义了一个更新信息结构类
IDCardInfo 定义了一个身份证结构类
NumberItem定义了一个帐号结构类
PhoneInfo 定义了一个手机信息结构类
AppInfoHelpr 定义了一个程序信息 得到版本信息,版本名
Constants 定义了一个公用静态变量存放类
DeviceHelper 定义了一个设备信息类 主要功能有获取尺寸 读取手机号
HttpClientHelper 定义了一个服务请求类,实现与服务器的交流。
HttpException 继承 Exception 实现了输出异常信息
HttpPostParameter 实现了参数信息的设置
HttpResponse 消息的响应
InternetHelper 内部帮助 可以湖的网络是否可用

由上分析可以得出,该软件只是实现了与服务器请求信息,以及信息显示。界面布局简单。

 

6、Zirco-browser:超越海豚的开源浏览器
Zirco是Android开源的替代浏览器。
说明:如果已卸载系统自带浏览器,使用Zirco Browser的书签功能可会会出现崩溃的情况。
基本的浏览器功能(书签,历史,下载...)、无限的选项卡、交通方便的书签、开幕式和闭幕式的简易制表符、从传统的Andr​​oid浏览器的书签导入、可设置为默认浏览器、AD -受体阻滞剂(重要提示:了解更多)。换句话说,zirco是一个Android的开源替代浏览器,功能很强大,除常见的功能外,还支持自定义搜索引擎、自定义usergent、支持导入火狐的书签、页面内查找、主页自定义、地址栏搜索、插件支持、无限制的选项卡浏览,左右循环滑动切换;同时支持屏蔽广告;功能可以说很多都是首创,我最喜欢的还是自定义搜索,终于也可以在手机上使用google自定义搜索了,应用自带中文,不过设置中含有部分英文。

Zirco-browser:超越海豚的开源浏览器分析
Base32
Base64
Base64Encoder
HexEncoder
编解码操作类库
BulkKeyCouplet  关键映射
Dbg Debug编译操作信息
QueryParams 检索参数信息 日期
QueryResult   这是模块类
UserWeave   用户类 定义了用户信息以及用户操作
WeaveAccountInfo  帐户自定义信息类
WeaveBasicObject  基础类 JSONObject 操作
WeaveConstants   定义常量
WeaveCryptoUtil  加密解密操作类
WeaveException  异常类
WeaveFactory  生产工厂
WeaveHeader   自定义头信息类
WeaveResponse 自定义响应消息类
WeaveSSLSocketFactory 此套接字工厂将创建SSL套接字使用配置证书验证(例如,允许自签名)。
WeaveTransport  传输协议类
WeaveUtil
QuickAction 自定义资源以及标题类
QuickActionGrid 表格视图操作
QuickActionWidget  显示用户界面的部件
Controller 控制器的实现
EventConstants  自定义事件的常数类
EventController  事件控制器的实现
IdownloadEventsListener  下载事件的监听接口
DbAdapter 数据库适配器的实现
UrlSuggestionItemComparator 网址比较
BookmarksCursorAdapter  书签光标适配器。
DownloadListAdapter  下载UI列表适配器。
HistoryExpandableListAdapter  历史显示自定义适配器
UrlSuggestionCursorAdapter  提出建议的适配器。
WeaveBookmarksCursorAdapter  书签光标适配器
BookmarkItem书签自定义类
DownloadItem  下载项目自定义类
HistoryItem 历史节点
UrlSuggestionItem 网址自定义类
WeaveBookmarkItem 书签标识类
BookmarksProviderWrapper  历史/书签管理。
WeaveColumns  自定义常量信息类
WeaveContentProvider
WeaveContentProvider
ZircoBookmarksContentProvider
IsyncListener   同步监听接口
WeaveSyncTask  同步任务
AboutActivity  关于界面
AdBlockerWhiteListActivity  广告拦截器的白名单显示视图
BookmarksHistoryActivity  联合书签和历史视图
BookmarksListActivity  书签列表视图
ChangelogActivity更改日志对话框
DownloadsListActivity  下载列表视图
EditBookmarkActivity   添加、编辑书签视图
HistoryListActivity  历史列表视图
ItoolbarsContainer   接口定义工具栏容器。
MainActivity  应用程序的主界面
MobileViewListActivity 广告拦截白名单列表视图
WeaveBookmarksListActivity 书签列表视图
BaseSpinnerCustomPreferenceActivity 自定义的下拉框
HomepagePreferenceActivity  主页喜好选配视图
PreferencesActivity 收藏视图
SearchUrlPreferenceActivity搜索URL收藏视图
UserAgentPreferenceActivity用户代理收藏视图
WeavePreferencesActivity 收藏视图
WeaveServerPreferenceActivity 服务器收藏视图
CustomWebView  扩展的WebView类
CustomWebViewClient 扩展的WebViewClient类
DownloadRunnable  下载线程
FaviconUpdaterRunnable 更新线程
HideToolbarsRunnable  隐藏工具栏线程
HistoryUpdater 历史更新线程
XmlHistoryBookmarksExporter  一个xml解析出历史书签的线程
XmlHistoryBookmarksImporter  一个从xml导入历史书签的线程
AnimationManager  动画效果管理类定义了多重动画效果
ApplicationUtils  应用函数
Constants 定义常量
DateUtils 日期时间管理类
IOUtils 实用程序的I/O操作类
ProxyChangeReceiver自定义的代理改变广播操作
ProxySettings  设置信息
UrlUtils 网站管理类
本项目有81个目标文件。代码简单易懂,适合初学者奔向中手,感兴趣的童靴可以好好研究哟。

7、开源项目pedometer
Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新、后台运行服 务等。
本项目有16个目标文件。
CaloriesNotifier 继承接口StepListener, SpeakingTimer.Listener
能量通知,实现步伐监听,说话监听
DistanceNotifier  继承接口StepListener,SpeakingTimer.Listener
距离通知,计算并显示走过的路程。
PaceNotifier  继承接口StepListener,SpeakingTimer.Listener
步伐通知,计算和显示速度(步/分钟),处理输入所需的步伐,并通知用户,如果他/她走快或慢。
Pedometer 主界面
PedometerSettings 设置属性自定义类
Settings  设置界面
SpeakingTimer  说话时间
反复监听所有对象呼吸。定义由用户设置的时间间隔。
SpeedNotifier  速度通知
计算和显示速度(步/分钟),处理输入所需的步伐,并通知用户,如果他/她走快或慢。用途计算速度的步伐和步长的产品。
StepBuzzer   步骤蜂鸣器
一步检测时震动。通常情况下,这是不重视,用于调试目的。
StepDetector步骤探测器
检测步骤,并通知所有听众
StepDisplayer  步骤显示
计数步骤提供的步骤检测,并通过当前的步数的活动。
StepListener 步骤监听
StepService  步骤服务
BodyWeightPreference
StepLengthPreference
都是对EditMeasurementPreference 继承 只允许浮点数
EditMeasurementPreference 继承EditTextPreference
它可以处理公制/英制设置。

这款软件的关键点是类StepService,喜欢的话可以看源码好好研究。


8、AndroidPdfViewerPDF查看器
Android PDF Viewer 是Android平台下的PDF阅读器。
本项目有100个目标文件。感兴趣的童靴可以好好研究哟。


9、andricoFacebook客户端
  Facebook的创办人是Mark Zuckerberg,他是哈佛大学的学生,之前毕业于Ardsley高中。最初,网站的注册仅限于哈佛学院的学生。在随后的两个月内,注册扩展至波士顿地区的其他高校(如麻省理工学院)以及斯坦福大学、纽约大学、西北大学和所有的长春藤名校。第二年,很多其他学校也被邀请加入进来。最终,在全球范围内有一个大学后缀电子邮箱的人(如.edu, .ac.uk等)都可以注册。之后,在Facebook中也可以建立起高中和公司的社会化网络。而从2006年9月11日起,任何用户输入有效电子邮件地址和自己的年龄段,即可加入。用户可以选择加入一个或以上网络,例如中学的、公司的、或地区的。

Facebook客户端软件分析
ByteArrayBody  操作字节流根据字节流获得进程条的状态
HttpChainingRunnable 服务连接线程
HttpClientService 客户端服务线程
HttpMessageFactory 请求由HTTP客户端服务生成HTTP可以执行的对象。
HttpResponseByHandlerDecorator 设置消息处理
HttpResponseRunnable  封装HTTP请求处理线程
IhttpResponseRunnable抽象http响应接口
ContactInfo 自定义联系人信息类
ContactList 自定义联系人列表类
JsonParser 自定义Json解析类
MainActivity  主程序界面
Preferences 定义存储数据类
SettingsActivity 设置界面
Synchronize 同步数据处理界面
UiHandler UI界面处理消息类
UserInfo 封装用户信息数据的容器
WebActivity 网页界面
WebViewActivity  网页视图界面
Contact 封装了自定义联系人数据
DBContact 数据库管理联系人数据
DBHelper 数据库的辅助类
AuthorizationActivity  口令认证界面
ExtendedPreferenceActivity 口令认证扩展界面
FB
FBBase
FBMethod 产生Md5值
FBMethodCallback 回调函数
FBMethodFactory 方法工厂
LoginActivity  登陆界面操作
本项目有30个目标文件。感兴趣的童靴可以好好研究哟。


10、TorProxy应用实现了Android手机无线电电传通讯(TOR)
TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以掌握socket连接、管理cookie等方法。
Shadow项目 20个目标文件,TorProxy项目83个目标文件。感兴趣的童靴可以好好研究哟。


11、jamendo-开源在线音乐
本项目共113个目标文件。
粗略介绍每个包作用:
com.teleca.jamendo.widget.*:用户自定义组建,主要包括进度条、错误条、专辑倒影图片控件、以及相关接口。
com.teleca.jamendo.util.:用户自定义视图切换器、图片缓存、自定义触摸监听器(播放进度)、以及分享,计算音乐时间,设置语言等工具帮助类。
com.teleca.jamendo.util.download.:提供下载远程音乐任务,以及相关接口回调,同时定义操作数据库相关接口,以及观察类。
com.teleca.jamendo.service.*:音乐的播放服务,以及下载服务。
com.teleca.jamendo.media.*:音乐播放器引擎以及相关接口(自定义类继承播放器MediaPlayer)。
com.teleca.jamendo.gestures.*:读取raw文件存取手势类,以及相关接口,同时自定义手势识别界面,用于手势操作播放音乐。
com.teleca.jamendo.dialog.*:自定义对话框基类,以及相关对话框。
com.teleca.jamendo.db.*:sqlite数据库操作相关类以及方法,包括相关基类,泛型。
com.teleca.jamendo.api.*:提供对象实体,歌曲、歌曲条目列表,歌曲专辑,歌手,以及相关IO异常处理等
com.teleca.jamendo.api.impl.*:通过服务端解析JSON格式数据并转化为相应实体对象,列表等。
com.teleca.jamendo.api.util:提供访问网络之工具类,url请求缓存,封装http请求等等。
com.teleca.jamendo.adapter.*:提供适配ListView列表适配器基类,以及相关子类.
com.teleca.jamendo.activity.*:提供操作界面activity,欢迎页,关于,播放浏览,播放,以及搜索,显示歌曲等界面。
当然我们可以粗略知道UI布局文件夹,包括UI布局,菜单布局,动画,xml(设置界面),值文件(不同语言版本),raw(手势文件)
首先我们对其包结构以及相关包用途有个大致的了解,接下来,再慢慢来看看这些界面,做到心中有数。

Jamendo代码里面实现音乐搜索主要是使用了Apache Http 4.0 和JSON,Jamendo官网提供API供应用程序查询数据,且提供了四种方式查询,依次是:Artist,Tag,UserPlaylist和UserStarredAlbums。Jamendo提供
http://api.jamendo.com/get2/id+name+url+image+artist_name/album/jsonpretty/?n=5&order=ratingweek_desc供应用程序查询和调用,采用JSON的方式与服务器进行数据交互。获得调用的API URL链接,调用Caller.doGet()  实现方式是通过HttpClient,然后就是将获得的Stream转换成JSONArray构造所需要的String,最后就是调用  getAlbums(JSONArrayjsonArrayAlbums) 。
在Jamendo程序中,有一个很明显的特征是存在一个全局的JamendoApplication类,此类继承自Application,此类的作用主要是实现应用程序集的全局变量,也就是在任何一个Activity中都可以访问的变量。它不会因为Activity的生命周期结束而消失。通过继承自Application,我们能够实现这个目标。
主界面主要由两部分构成,一个Header和一个ListView,Header部分由一个ViewFlipper构成,主要分三种,一个loading画面,一个Gallery显示,一个获取failed画面,由于重点是下面的listView部分,所以本部分在此就不详细说明了。
我们知道一般ListView显示都离不开Adapter,在此也不例外,或继承自BaseAdapter,然后重写getView方法,或直接调用Android已经写好的方法,之所以拿这个来讲,是因为这里稍微有点特殊,它并不是就直接实现getView方法然后,通过调用setAdapter显示,而是在其中添加了一步,将原本能通过一个Adapter显示的分成两部分,加入Browse Jamendo 和Libray这两个TextView,让用户更容易理解,通过分析这个listView的实现,可以加深对Adapter实现方式的理解。
在Jamendo中,主要是通过再定义一个SeparatedListAdapter来进行这个工作,我们来看看它是怎么实现的:我理解的Adapter过程,首先通过调用getCount()来获得总Row数目,然后对一行调用getView进行绘制,因此要实现在listView里面另外加入两部分,那么对每一部分调用自己的绘图方式,然后在绘制过程中,判断if(position == 0) return headers.getView(sectionnum, convertView, parent);然后单独调用其绘制函数进行绘制。

jamendo 在线音乐分析
JamendoApplication播放与下载服务
AlbumActivity  相册视图
ArtistActivity  艺术家视图
BrowsePlaylistActivity  播放列表视图
DownloadActivity  下载界面视图
HomeActivity  首页视图
IntentDistributorActivity  介绍视图
PlayerActivity播放视图
PlaylistActivity  播放列表视图  自动保存播放列表
RadioActivity  收音机视图  无线电导航
SearchActivity  搜索视图
SettingsActivity  设置视图
SplashscreenActivity闪屏视图
StarredAlbumsActivity五星级相册视图  浏览专辑列表 打开它所在的专辑
AlbumAdapter  相册适配器
AlbumGridAdapter  相册格子式适配器
ArrayListAdapter  数组式列表适配器
DownloadJobAdapter  下载任务适配器
ImageAdapter  图片适配器
PlaylistAdapter播放列表适配器
PlaylistRemoteAdapter远程播放列表适配器
PurpleAdapter紫色适配器
PurpleEntry
PurpleListener
RadioAdapter收音机适配器
ReviewAdapter评论适配器
SeparatedListAdapter分隔列表适配器
Album 相册存储数据
Artist  艺术家存储数据
JamendoGet2Api  API操作
License  自定义许可证(用户)类
Playlist 播放列表存储类
PlaylistEntry播放列表条目存储类
PlaylistRemote远程播放列表存储类
Radio  自定义电台类
Review  自定义评论类
Track 轨迹类
WSError  错误类
AlbumBuilder
AlbumFunctions
ArtistBuilder
ArtistFunctions
JamendoGet2ApiImpl用于web请求的ApacheHTTP客户端API的实现
JSONBuilder  抽象类
LicenseBuilder   认证生成
PlaylistBuilder   远程播放列表生成
PlaylistFunctions  返回远程播放列表
RadioBuilder    收音机生成
RadioFunctions   返回生成收音机组
ReviewBuilder    生成评论对象
ReviewFunctions   获得评论
RSSFunctions    获得id
TrackBuilder    生成跟踪对象
TrackComparator  跟踪比较
Caller   拨打功能
RequestCache  请求缓存
XMLUtil  xml操作
AlbumDatabaseBuilder  专辑数据库生成
Database  数据库接口
DatabaseBuilder数据库建设者模板 - 有利于从SQLite数据库对象增加
DatabaseImpl采用Android的SQLite数据库实施
RadioDatabaseBuilder  收音机数据库生成
TrackDatabaseBuilder  跟踪数据库生成
AboutDialog关于对话框
AddToPlaylistDialog添加到播放列表对话框
AlbumLoadingDialog专辑加载对话框
ArtistLoadingDialog  艺术家加载对话框
LoadingDialog  加载对话框基类
LyricsDialog  歌词对话框
PlayerAlbumLoadingDialog  专辑播放加载对话框
PlaylistRemoteLoadingDialog远程播放列表加载对话框
StarredAlbumLoading  五星专辑载入对话框
TutorialDialog  教程信息显示框
GestureCommand接口
GestureCommandRegister  简单的手势命令寄存器
GesturesHandler  处理程序的手势
PlayerGestureCommandRegiser
PlayerGestureNextCommand
PlayerGesturePlayCommand
PlayerGesturePrevCommand
PlayerGestureStopCommand
自定义手势类
PlayerEngine  播放引擎接口
PlayerEngineImpl  同上
PlayerEngineListener播放引擎侦听接口
DownloadService  后台下载服务
PlayerService后台播放服务
DrawableAccessor绘制存取
FixedViewFlipper  固定视图翻转
Helper  各种随机函数
ImageCache  缓存下载的图像,节省带宽和用户的数据包
OnSeekToListenerImp   点触事件
SeekToMode  枚举
DownloadDatabase下载接口该数据库存储在一个外部的SD卡,更具体地说,每个SD卡已用于下载/jamendroid/ downloads.db参考下
DownloadDatabaseImpl  数据库描述轨道数量
DownloadHelper  各种辅助功能
DownloadJob单一的远程文件下载任务
DownloadJobBuilder下载任务生成
DownloadJobListener下载任务的监听接口
DownloadManager所有下载的相关行动接口
DownloadManagerImpl下载管理接口
DownloadObserver下载观察接口
DownloadProvider下载数据存储接口
DownloadProviderDbImpl使用SqlLite数据库存储
DownloadTask文件下载线程
MediaScannerNotifier  mp3文件下载文件扫描,并把它添加到Android的乐手的图书馆
AlbumBar 专辑栏
ArtistBar艺术栏
FailureBar通知用户失败栏
OnAlbumClickListener点击专辑栏的接口
ProgressBar进程条栏
ReflectableLayout反映UI元素的容器
ReflectiveSurface
RemoteImageView图片浏览扩展类,允许远程图像轻松下载

该项目共113个目标文件!文档多,易于学习。请感兴趣的同学好好研究啊。


12、飞行历 飞行模式 AirPlus
一款Android飞行模式自动切换工具,可以根据设定的时间自动进入和退出飞行模式,在无需关机的情况下让手机更加省电,减少睡眠时间手机的辐射作用。
支持功能
1.快速进入和快速退出飞行模式
2.自定义添加,删除,启用,禁用飞行时间段
3.设置自动切换飞行模式的时间和重复日期
4.设置控制不受飞行模式控制的无线硬件
5.设置是否在切换飞行时进行震动提示
6.进入切换飞行模式10秒钟提示(延迟飞行,立即飞行,取消飞行)
7.可以进行延迟飞行操作
8.检测通话状态,防止正在通话时切换飞行模式
9.设置延迟飞行的提醒间隔
10.设置音量键在飞行切换中的作用
分析如下:

Air  主要实现了飞机相关数据的封装容器
AirAlertFullScreen 继承Activity 实现飞行的全屏模式显示
AirAlert 继承AirAlertFullScreen  显示信息
AirClockTextView  时钟显示的文本显示控件
AirDigitalClock 设置数字时钟 以及更新数字时钟
AirModeController 飞行模式的控制,通过广播实现。
AirModeRadioPreference 飞行模式的单选选择设置。
AirPlusActivity  程序的主界面涵盖了添加 删除 菜单 等等功能
Airs 针对飞行数据的管理操作数据库
AirService 后台运行实现了监听电话以及关闭后的清除
DontPressWithParentLayout
RepeatPreference
SetAir 设置类操作相关数据
SettingsActivity 设置界面
AirDatabaseHelper  飞行数据库的操作类
AirProvider 继承 ContentProvider 实现存储数据
AirAppWidgetReceiver 应用程序的广播接受 主要负责程序的更新
AirEndReceiver         结束等操作     
AirInitReceiver     启动后的初始化
AirReceiver 飞行接受提示 飞行时区的变化以及相关事件的监听

本项目共25个目标文件。文档多,易于学习。请感兴趣的同学好好研究啊。

13、Jchat
Android jChat 是一个 Android 手机上基于位置的聊天软件,采用P2P通讯机制。
JChat 的编译:
1、  配置环境,需要的软件有Android 模拟器,JADE Leap(JADE是多agent开发框架),J2SE (至少1.5)。
2、  进入开发设置,运行模拟器,安装JChat文件(可通过命令adb install<PATH_TO_APK>\jChat.apk),运行JADE平台(可通过命令java -cp <PATH_TO_JADE_LEAP_JAR>\JadeLeap.jar-Djade_domain_df_autocleanup=true jade.Boot -gui  ),从模拟器中运行程序JChat,在JADE平台菜单中设置主机以及端口。最后在JChat程序菜单中点击连接按钮进行连接操作(详情可以看官方文档--下载包中有)。
3、  源码分析之前,需要认真学习一下Jade的Android的编程(有聊天程序源码下载,都在下载包中),编译源码,需要到google 中申请 map api 的key,不过由于神奇的国度制约的原因,申请连接的网站无法访问,需要通过其它的方法,比如代理等等,申请到的key 需要放到 homepage.xml中。
下面来进行分析吧,分析只是针对源码,其它的不涉及。
本项目共25个目标文件。
ContactListActivity程序的启动页,内部含有控制地图以及Jade连接等操作,方法onConnected 是JadeGateWay里面的回调方法。
ChatActivity 是聊天的主界面,主要通过JadaGateway操作连接,发送,接受等
ChatSessionNotificationManager聊天会话通知管理自定义类,记录了所有的进程清单。
Contact 接触者自定义类,含有名称,电话号码,状态值,是否在sd卡里面…。
ContactListAdapter接触者列表适配器,主要用户显示联系人列表的信息。
ContactListChanges接触者列表变化的自定义类,接触者列表状态更新。
ContactLocation  接触者位置类,是否有移动等动作。
ContactManager  接触者管理类,主要负责接触者的添加、删减以及UI更新等功能。
ContactsPositionOverlay接触者的位置显示物,Overlay的子类,主要负责在地图上显示自定义图像,内置滚动与否以及图像大小改变与否,在地图上话画在线联系人以及场景等。
ContactsUpdaterBehaviour主要表现在其设置由MsnAgent执行。它基本上执行主要业务:定期更新的DF的手机中所有接触的位置(由模拟的GPS更新)。
GeoNavigator 自定义导航类,启动或关闭联络位置的更新。
GuiEventHandlerUI处理类。
IEventHandler  事件处理类接口。
JadeParameterDialog  Jade参数设置对话框。
JChatApplication  应用程序类,存贮了全局变量信息,以及初始化服务器以及端口号,手机号等
MsnAgent 消息代理(Jade的Android的编程)
MsnEventMgr消息事件的自定义类,含有事件名,地图存储事件等参数信息,
MsnSession 消息会话,含有所有参与者的电话号码,以及消息,
MsnSessionAdapter消息会话适配器,显示消息会话视图。
MsnSessionManager消息会话管理的自定义类,主要是启动会话,添加会话,移除会话,返回会话,添加消息到会话等操作。
MsnSessionMessage消息会话消息的自定义累,含有时间、内容、发送者姓名以及电话号码等。
MultiSelectionListView多选列表
SendSMSActivity 发送消息界面,执行发送任务。
SMSIntentReceiver消息接收广播,主要负责消息的接收。
程序主要是已消息会话为主,引进了Google地图显示联系人的位置等信息。

 

14、Android下的加密信息客户端WhisperSystems-TextSecure
TextSecure是Android下的加密信息客户端,旨在增强用户和企业通信的安全性。
本项目共289 个目标文件,喜欢的童靴就好好研究下吧。

15、ipcamera-for-android 手机变成IPCamera
一款将Android手机变成IP Camera的软件,在同一个网路,你可以在任意的浏览器查看手机监控视频。其中实现了如何透过LocalSocket采集纯H.264视频流。如何封装FLV格式视频文件。如何集成一个内置的Web Server。
本项目共7个目标文件,但需要编译jni文件下有c++文件。感兴趣的同学好好研究下吧。

16、OpenSudoku一个简单的九宫格数独游戏
OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。它旨在通过手指和键盘控制。它预装90在3个难度级别的谜题,更多的难题,可以从网上下载,它也允许你输入自己的难题。
本项目共54 个目标文件,还含有其它测试项目。感兴趣的同学好好研究下。

17、quitesleep手机电话功能软件
QuiteSleep 是 Android 手机的一个小软件,它可以控制你在睡眠期间谁可以打电话进来打搅你,也可以定义其他唤醒事件,如果处于静音状态,该软件会给打电话的人发送一条你设定好的短信,告诉他别来打搅你的睡眠。


18、Android全能视频播放器 VPlayer
VPlayer 是一款Android 平台上最好的媒体播放器,具有很多实用和方便的功能,干净简洁的界面,加上流畅的播放处理能力,大大增强了Android的视频播放功能。它支持所有流行的视频播放格式。
VPlayer是一款安卓平台上较为知名的播放器程序,新的版本中带来了硬件加速解码和渲染功能,能够让绝大部分的Android设备都能够播放MKV/AVI/MOV/FLV/TS/M4V/ 3GP视频。
VPlayer是一个硬件加速Android的媒体播放器。它使用硬件视频解码器,各种容器和音频编解码器组合。
双核心/高端设备(轰动,银河S/S2,NEXUS- S),可以播放720p甚至1080pMKV /AVI/MOV /FLV/ TS/ M4V /3GP。VPlayer水渠不到MoboPlayer MX视频播放器,如西南的球员bettery。ICS的设备可以发挥完整的硬件加速1080P文件,蜂窝片可以播放720P的MKV与完整的硬件加速。如果您使用MIUI,CM7或非官方的光盘不能播放MKV/ FLV / MOV / AVI使用的默认播放器,VPlayer是最好的解决办法。


19、rokon_src_2-0-3_游戏引擎
Rokon 是Android平台一个开源(New BSD)的2D OpenGL 游戏引擎,目前版本为 2.0.3 (10/07/09,10/08/17更新到2.1.0) 。其中集成了Box2D,帮助你在游戏中实现物理效果。
引擎作者已经停止更新了,所以大家请谨慎选用这个引擎,毕竟还有一些BUG没有修改。
详细资料地址:http://www.eoeandroid.com/thread-26588-1-1.html
本项目共113 个目标文件,感兴趣的童靴就研究下。


20、Angle v1.0_2D游戏引擎
Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。

本项目共42 个目标文件,感兴趣的童靴就研究下。

21、sipdroid语音及视频通话 (经典)
Sipdroid是一个运行于Android手机平台上的SIP/VoIP客户端。
开发环境的配置
下载下来SipDroid源代码后,不能直接导入到eclipse中,否则是无法使用和编译的。
首先需要通过command line参照工程目录下的BUILT.txt文件对工程进行update。
如:android update project-p . -t 2(这里 -p指的是 --path -t指的是 --target)
由于是开源软件,需要版本控制的服务器,可以安装Subclipse(可以参见官网)
这样就可以将工程import到eclipse中了。
整理一些Android视频通话技术开发的资料:
SipDroid是一款开源的SIP/Voip客户端软件,针对Android手机开发平台。它是通过SIP provider来提供电话通信服务的,在它的最新的版本1.5.5beta中也提供了视频通话的服务。
它运行在标准的SIP协议之上,由于Android内核本身没有提供SIP协议栈,所以SipDroid软件中通过JNI直接实现了SIP协议栈。它能够在如下一些网络中提供VoiP服务:WLAN、3G、EDGE网络。甚至能够和Skype、Google Talk, MSN, Yahoo, AIM, and ICQ等用户进行通话。但前提必须到一些SIP provider注册账号(有免费的,也有收费的),SipDroid强烈建议使用PBXes这个sip provider来得到服务。
对于SipDroid实现视频通话的原理,目前的理解是:发送方是将是将视频数据传输到视频流媒体服务器,然后再传输给接收方的。具体细节目前不是很清楚,因为涉及到许多通信协议。

本项目共250 个目标文件,还有jni文件下c++文件需要编译。感兴趣的同学必须得好好研究研究。

还有收集到的资源------888个经典Logo

还有好多……


如何阅读java与c++项目
frameworks 目录(核心框架——java及C++语言)
|-- base    (基本内容)
|   |-- api   (?都是xml文件,定义了java的api?)
|   |-- awt   (AWT库)
|   |-- build   (空的)
|   |-- camera   (摄像头服务程序库)
|   |-- cmds   (重要命令:am、app_proce等)
|   |-- core   (核心库)
|   |-- data   (字体和声音等数据文件)
|   |-- docs   (文档)
|   |-- graphics (图形相关)
|   |-- include   (头文件)
|   |-- keystore (和数据签名证书相关)
|   |-- libs   (库)
|   |-- location (地区库)
|   |-- media   (媒体相关库)
|   |-- obex   (蓝牙传输库)
|   |-- opengl   (2D-3D加速库)
|   |-- packages (设置、TTS、VPN程序)
|   |-- sax   (XML解析器)
|   |-- services (各种服务程序)
|   |-- telephony (电话通讯管理)
|   |-- test-runner (测试工具相关)
|   |-- tests   (各种测试)
|   |-- tools   (一些叫不上名的工具)
|   |-- vpn   (VPN)
|   `-- wifi   (无线网络)
|-- opt    (可选部分)
|   |-- com.google.android     (有个framework.jar)
|   |-- com.google.android.googlelogin  (有个client.jar)
|   `-- emoji   (standard message elements)
`-- policies   (Product policies are operating system directions aimed at specific uses)
    `-- base
        |-- mid (MID设备)
        `-- phone (手机类设备,一般用这个)
hardware 目录  (部分厂家开源的硬解适配层HAL代码)
|-- broadcom    (博通公司)
|   `-- wlan    (无线网卡)
|-- libhardware    (硬件库)
|   |-- include    (头文件)
|   `-- modules   (Default (and possibly architecture dependents) HAL modules)
|       |-- gralloc   (gralloc显示相关)
|       `-- overlay   (Skeleton for the "overlay" HAL module.)
|-- libhardware_legacy (旧的硬件库)
|   |-- flashlight   (背光)
|   |-- gps    (GPS)
|   |-- include    (头文件)
|   |-- mount    (旧的挂载器)
|   |-- power    (电源)
|   |-- qemu    (模拟器)
|   |-- qemu_tracing (模拟器跟踪)
|   |-- tests    (测试)
|   |-- uevent    (uevent)
|   |-- vibrator    (震动)
|   `-- wifi    (无线)
|-- msm7k    (高通7k处理器开源抽象层)
|   |-- boot    (启动)
|   |-- libaudio   (声音库)
|   |-- libaudio-qsd8k (qsd8k的声音相关库)
|   |-- libcamera   (摄像头库)
|   |-- libcopybit   (copybit库)
|   |-- libgralloc   (gralloc库)
|   |-- libgralloc-qsd8k (qsd8k的gralloc库)
|   |-- liblights   (背光库)
|   `-- librpc    (RPC库)
|-- ril     (无线电抽象层)
|   |-- include    (头文件)
|   |-- libril    (库)
|   |-- reference-cdma-sms (cdma短信参考)
|   |-- reference-ril    (ril参考)
|   `-- rild     (ril后台服务程序)
`-- ti       (ti公司开源HAL)
    |-- omap3     (omap3处理器)
    |   |-- dspbridge   (DSP桥)
    |   |-- libopencorehw (opencore硬件库)
    |   |-- liboverlay   (overlay硬件库)
    |   |-- libstagefrighthw (stagefright硬件库)
    |   `-- omx    (omx组件)
    `-- wlan     (无线网卡)
prebuilt 目录    (x86和arm架构下预编译的一些资源)
.
|-- android-arm   (arm-android相关)
|   |-- gdbserver   (gdb调试器)
|   `-- kernel    (模拟的arm内核)
|-- android-x86   (x86-android相关)
|   `-- kernel    (空的)
|-- common    (通用编译好的代码,应该是java的)
|-- darwin-x86    (drawin x86平台)
|   `-- toolchain   (工具链)
|       |-- arm-eabi-4.2.1
|       |-- arm-eabi-4.3.1
|       `-- arm-eabi-4.4.0
|-- darwin-x86_64   (drawin x86 64bit平台)
|-- linux-x86    (linux x86平台)
|   `-- toolchain   (工具链,我们应该主要用这个)
|       |-- arm-eabi-4.2.1
|       |-- arm-eabi-4.3.1
|       |-- arm-eabi-4.4.0
|       `-- i686-unknown-linux-gnu-4.2.1(x86版编译器)
|-- linux-x86_64   (linux x86 64bit平台)
|-- windows    (windows平台)
`-- windows-x86_64 (64bit windows平台)
system 目录  (底层文件系统库、应用及组件——C语言)
.
|-- Bluetooth   (蓝牙相关)
|-- core    (系统核心工具盒接口)
|   |-- adb   (adb调试工具)
|   |-- cpio   (cpio工具,创建img)
|   |-- debuggerd (调试工具)
|   |-- fastboot (快速启动相关)
|   |-- include   (系统接口头文件)
|   |-- init   (init程序源代码)
|   |-- libacc   (轻量级C编译器)
|   |-- libctest   (libc测试相关)
|   |-- libcutils (libc工具)
|   |-- liblog   (log库)
|   |-- libmincrypt (加密库)
|   |-- libnetutils (网络工具库)
|   |-- libpixelflinger (图形处理库)
|   |-- libsysutils (系统工具库)
|   |-- libzipfile (zip库)
|   |-- logcat   (查看log工具)
|   |-- logwrapper (log封装工具)
|   |-- mkbootimg (制作启动boot.img的工具盒脚本)
|   |-- netcfg   (网络配置netcfg源码)
|   |-- nexus   (google最新手机的代码)
|   |-- rootdir   (rootfs,包含一些etc下的脚本和配置)
|   |-- sh    (shell代码)
|   |-- toolbox   (toolbox,类似busybox的工具集)
|   `-- vold   (SD卡管理器)
|-- extras    (额外工具)
|   |-- latencytop (a tool for software developers,identifying system latency happen)
|   |-- libpagemap (pagemap库)
|   |-- librank   (Java Library Ranking System库)
|   |-- procmem (pagemap相关)
|   |-- procrank (Java Library Ranking System相关)
|   |-- showmap (showmap工具)
|   |-- showslab (showslab工具)
|   |-- sound   (声音相关)
|   |-- su    (su命令源码)
|   |-- tests   (一些测试工具)
|   `-- timeinfo (时区相关)
`-- wlan    (无线相关)
    `-- ti    (ti网卡相关工具及库)
packages 目录
.
|-- apps     (应用程序库)
|   |-- AlarmClock   (闹钟)
|   |-- Bluetooth   (蓝牙)
|   |-- Browser   (浏览器)
|   |-- Calculator   (计算器)
|   |-- Calendar   (日历)
|   |-- Camera    (相机)
|   |-- CertInstaller   (在Android中安装数字签名,被调用)
|   |-- Contacts   (拨号(调用)、联系人、通话记录)
|   |-- DeskClock   (桌面时钟)
|   |-- Email    (Email)
|   |-- Gallery    (相册,和Camera类似,多了列表)
|   |-- Gallery3D   (?3D相册)
|   |-- GlobalSearch (为google搜索服务,提供底层应用)
|   |-- GoogleSearch (google搜索)
|   |-- HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
|   |-- IM    (即时通讯,为手机提供信号发送、接收、通信的服务)
|   |-- Launcher   (登陆启动项,显示图片框架等等图形界面)
|   |-- Launcher2   (登陆启动项,负责应用的调用)
|   |-- Mms    (?彩信业务)
|   |-- Music    (音乐播放器)
|   |-- PackageInstaller (安装、卸载程序的响应)
|   |-- Phone    (电话拨号程序)
|   |-- Provision   (预设应用的状态,使能应用)
|   |-- Settings   (开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
|   |-- SoundRecorder (录音机,可计算存储所需空间和时间)
|   |-- Stk     (接收和发送短信)
|   |-- Sync    (空)   -------○1
|   |-- Updater   (空)
|   `-- VoiceDialer   (语音识别通话)
|-- inputmethods   (输入法)
|   |-- LatinIME   (拉丁文输入法)
|   |-- OpenWnn   (OpenWnn输入法)
|   `-- PinyinIME   (拼音输入法)
|-- providers    (提供器,提供应用程序、界面所需的数据)
|   |-- ApplicationsProvider   (应用程序提供器,提供应用程序启动项、更新等)
|   |-- CalendarProvider    (日历提供器)
|   |-- ContactsProvider    (联系人提供器)
|   |-- DownloadProvider   (下载管理提供器)
|   |-- DrmProvider    (创建和更新数据库时调用)
|   |-- GoogleContactsProvider (联系人提供器的子类,用以同步联系人)
|   |-- GoogleSubscribedFeedsProvider(设置信息提供器)
|   |-- ImProvider     (空)
|   |-- ManagementProvider   (空)
|   |-- MediaProvider    (媒体提供器,提供存储数据)
|   |-- TelephonyProvider   (彩信提供器)
|   |-- UserDictionaryProvider (用户字典提供器,提供用户常用字字典)
|   `-- WebSearchProvider   (空)
|-- services  
|   |-- EasService     (空)
|   `-- LockAndWipe    (空)
`-- wallpapers      (墙纸)
    |-- Basic      (基本墙纸,系统内置墙纸)
    |-- LivePicker     (选择动态壁纸)
    |-- MagicSmoke    (壁纸特殊效果)
    `-- MusicVisualization   (音乐可视化,图形随音乐而变化)
○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。
vendor 目录   (厂家定制内容)
|-- aosp     (android open source project)
|   `-- products   (一些板级规则)
|-- htc     (HTC公司)
|   |-- common-open (通用部分)
|   |   `-- akmd   (解压img用的工具)
|   |-- dream-open   (G1开放部分)
|   |-- prebuilt-open (预编译开放部分)
|   `-- sapphire-open (sapphire这款型号开放内容)
|-- pv-open    (没东西)
|-- qcom     (里面基本是空的)
`-- sample    (google提供的样例)
    |-- apps    (应用)
    |   |-- client   (用户)
    |   `-- upgrade (升级)
    |-- frameworks   (框架)
    |   `-- PlatformLibrary (平台库)
    |-- products   (产品)
    |-- sdk_addon   (sdk添加部分)
    `-- skins    (皮肤)
        `-- WVGAMedDpi (WVGA适用的图片)
SDK和OUT目录没有列出作为基于SDK的开发者一般看的都是\packages\apps目录下的
程序实例,其中setting是我的最爱。而\packages\providers是内部自带的数据库源程序。
\development\是一些开发的例子

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics