读书人

Android 下百实例源码分析以及开源分析

发布时间: 2012-08-10 12:19:33 作者: rapoo

Android 上百实例源码分析以及开源分析

首先 介绍几本书籍(下载包中)吧。

01_Android系统概述

02_Android系统的开发综述

03_Android的Linux内核与驱动程序

04_Android的底层库和程序

05_Android的JAVA虚拟机和JAVA环境

06_Android的GUI系统

07_Android的Audio系统

08_Android的Video 输入输出系统

09_Android的多媒体系统

10_Android的电话部分

11_Android的连接部分

12_Android的传感器系统

13_Android应用开发揭秘(含代码)

14_Android 电话与短信应用

15_Android斗地主[牌桌实现源码]

16_Android核心分析

17_Android开发权威指南

18_Android开发指南中文版-应用程序框架

19_Android驱动开发入门及手机案例开发分析教程

20_Android手机开发应用案例分析之手机版开心网功能实现

21_Android硬件驱动开发关键技术和HAL移植要领

22_Android中文翻译组——Android中文API合集(4)

23_Android Google.Android开发入门与实战

24_Android 精通Android游戏开发

25_Android 3G应用开发之Android

26_Android 15个Android很有用的代码片段

27_Android Android 图像处理篇

28_Android Android_CTS测试研究

29_Android Android_GoogleMaps基础开发教程

30_Android Android_GPS架构分析

31_Android android_JNI编程_一些技巧

32_Android android_jni操作指南

33_Android Android_NDK开发实例

34_Android Android_RIL层剖析(官方翻译)

35_Android Android2.2+API+中文文档系列

36_Android Android的Message机制(简单小结)

37_Android Android的主题和风格介绍

38_Android Android开发环境搭建

39_Android Android内存泄露调试

40_Android Android日历完整实现

41_Android Android摄像头的应用

42_Android Android实现GPS定位

43_Android Android通过JNI调用驱动程序

44_Android Android网络开发详解

44_Android android写的google map api 应用

46_Android android学习资料大全

47_Android Android音视频的编解码

48_Android Android应用框架原理与程序设计36技%28高焕堂著、简体版%29

49_Android Android与JUnit深入浅出

50_Android Android真机开发教程

51_Android Android中文翻译组——Android中文API合集(4)

52_Android bluetooth 蓝牙

53_Android Google_Map_API谷歌地图

54_Android Android的XML解析

55_Android 牛人Android提高篇

56_Android 手把手教你用Android开发新浪微博客户端

毋庸置疑,看完上面的书籍,你不是高手,都不行。

我只是每天看一个小时,但是已经看完了大半部分,其它时间用于研究c++方面的东西了,没办法啊,我以前是搞c++的,现在换了公司,得学Java了,但是我对c++的爱好始终没有减,有时间的话我把研究好了的东西开源出来大家一起交流下。

进入正题了,以下是大量的Android 的实例源码分析(含 开源项目 ----都在下载包中),我一一详解,简单的或重复的技术就直接略过了,谢谢大家的指点。

1、360新版特性界面源代码

实现了360新版特性界面的效果,主要涉及到Qt的一些事件处理与自定义控件。但源码好像是c++。

2、aidl跨进程调用

服务端onBind暴露,然后客户端bindService得到aidl对象

3、UI设计之 仿做蘑菇街UI设计 源码

包含viewflipper用来显示一个展示幻灯片banner 用到了OnGestureListener,OnTouchListener接口。

4、Android 程序的安装、卸载和更新

通过Intent机制,调出系统安装应用/卸载应用,直接调用安装接口,

5、Android有未接来电后处理(判断未接来电)

继承PhoneStateListener后,当手机的状态改变后将会触发onCallStateChanged.手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音)。

6、Android与js交互

webview可以通过loadUrl()这个函数对html上的js进行调用同时传参(js需要参数) 这样就可以向html传值了。继承WebChromeClient类,分别使用Android的内置控件重写了Js中对应的对话框,就是说对js中的对话框做处理了。

7、Android远程登录含有loading登录效

通过使用Handler实现远程登陆功能以及效果,使用Socket以及DataOutputStream、DataInputStream 实现登陆判断,代码含注册界面、服务器响应。

8、android在wifi下手机与电脑的socket通信

手机作为服务端,电脑使用MFC编程作为客户端,原理是,手机建立一个ServerSocket,并获取自己的ip地址和端口port;然后电脑通过socket连接手机的ip:port。熟悉c++的人可以测试。

9、Android之Wifi学习教程

主要讲解了四个类ScanResult,wifiConfiguration,WifiInfo,WifiManager的使用方法。

10、Android之用PopupWindow实现弹出菜单

使用了popupWindow窗体轻松实现了菜单很难实现的界面。多级菜单中包含了子菜单。

很有学习价值。

11、Android自动开关机实现

通过BroadcastReceiver 实现自定义消息。

12、Android中监听电话状态

Android在电话状态改变是会发送action为android.intent.action.PHONE_STATE的广播,而拨打电话时会发送action为android.intent.action.NEW_OUTGOING_CALL的广播.

13、Android自动发送短信

sendTextMessage方法中第一个参数表示短信的目的电话号码,第二个参数表示短信服务中心号码,如果为null则使用默认的短信服务中心号码。第三个参数表示短信内容,第四个参数表示发送短信结果内容,第五个参数表示发送短信到目的地址后的回复信息。

14、BrewClock倒计时

使用CountDownTimer这个记录下载时间类实现计数。将后台线程的创建和Handler队列封装成为了一个方便的类调用。

15、FiveChess五子棋

通过一个自定义类继承SurfaceView 实现界面,扩展了 Const,SurfaceHolder.Callback, Runnable等接口。

16、DialogShow

一个极其简单的Dialog例子

17、dialog去除边框代码

看标题就应该知道,是一个对话框的外观效果的例子。

18、BOOK看遍所有UI控件

一个例子实现了Android 里面所有的UI控件

19、奇艺高清UI界面源代码

一款很好看的界面,有首页,分类,搜索,我的资料,更多。分别实现了贴图轮换,界面阙套,以及多标签,轮换动画等特效。从这代码中可以学习到界面布局,理解BaseAdapter适配器的作用。主要是UI设计,具体的看代码哟。

20、hotel宾馆系统

一款有java实现的宾馆系统,学习Java的可以看下,学习Android的童靴飘过。

21、OssSystem(OA系统图书管理简单版)

简单的实现了图书管理的系统,主要还是UI设计,其中封装了一个类与服务器交流。

22、QQ_UI之分类菜单DEMO

ListView内嵌GridView的实现。

23、从android中调用web service的源码

详细见代码(简单)

24、从网络上获取图片

主要通过InputStream,FileOutputStream,HttpURLConnection实现。

25、动画效果 translate、scale、alpha、rotate 切换Activity动画控件位置调整

用四个4个TextView 实现了不同的动画效果

26、抖动窗口

通过Animation类 实现 编辑框的抖动

27、QQ的登录界面 源代码

主要是UI设计,在布局文件中实现。

28、tablelogin(登陆界面)

主要是UI设计,含登陆,注册等界面。

29、多点缩放字体

通过setTouchListener监听实现多点消息,然后效果实现。

30、ImageView 图片循环跑马灯的效果

通过Animation 实现ImageView 的动画效果。

31、ViewPager-实现左右两个屏幕的切换

实现了ViewPager-实现左右两个屏幕的切换 动画效果(没有引用Animation)。

32、LoginXml

简单的 登陆界面设计。

33、miniTwitter登录界面

简单的 登陆界面设计。

34、VIEW双缓冲与SurfaceView比较

如题。

35、毕业设计优秀论文

内容包括移动办公毕业论文,基于Android的移动公交查询系统设计与实现,基于Android平台的3G气象软件,基于Android平台的星座查询软件设计,基于android手机平台的吃豆人游戏设计与开发。

36、超爽的android抽屉效果

写了一个继承LinearLayout的类实现抽屉效果。可以从本例中学习到一些自定义控件。

37、Android程序如何升级

详细见文档。

38、OPENG开发的示例代码

C版 详细见代码。

39、MineSweeper

Java实现的扫雷游戏(经典)。详细见代码。

40、TankWar坦克大战

有Java实现的坦克大战。详细见代码。

41、多级PopupWindow的小demo

很好的学习了PopupWindow。

42、个人消费记录软件

很好的学习了操作数据库实现消费记录。

43、仿优酷Android客户端图片左右滑动(自动滑动)

JDK中的多线程并发库:ScheduledExecutorService的使用,用它实现的每两秒滑动一次图片,大家也可以用其它方式实现。Handler+Message机制更新UI。

44、高仿基于android2.2(Froyo)的Contacts

实现了对联系人进行操作,详细见代码。

45、Android防止内存溢出浅析

对防止内存溢出总结了几条。

46、换肤 程序

详细见代码,非常简单。

47、仿iphone 气泡短信 DEMO

ListAdapter 实现,详细见代码。

48、渐入渐出动画 无闪烁 无黑底 Demo

如题,详细见代码。

49、高仿 WIN8系统 磁贴点击下沉倾斜效果源码

如题,详细见代码。

50、结合html5jscss测试程序附源码

emoJavaScriptInterface类为js调用android服务器端提供接口 android

作为DemoJavaScriptInterface类的客户端接口被js调用调用的具体方法在DemoJavaScriptInterface中定义: 例如该实例中的clickOnAndroid。详细见代码。

51、简单的订机票系统源码

用调用webservice获取xml,将获得xml再解析出来

52、获取Android系统程序信息

如题,详细见代码。

53、加载网页进度条

标题栏显示网页标题并且滚动,并且用进度条显示网页的加载进度(重新自定义标题栏。详细见代码。

54、仿大众点评源码

只是简单的实现了UI,没有与服务器交流。学好Ui非常好的例子。

55、android获取网络数据到本地并查看

详细见文档。

56、仿QQ微信登录界面

学习UI非常好的例子,只是UI登陆注册等设计,详细见代码。

57、基于socket通讯的文件续传

基于socket通讯的文件续传,android基于socket通讯的文件续传。详细见代码。

58、监控别人的行踪

分别用GPS,google,baidu等定位行踪。

59、仿UCWEB界面源码

详细见代码。

60、仿新版人人的效果

非常好学习界面例子,详细见代码。

61、仿ireader书架

详细见代码。

62、Android模仿乐淘的应用程序分析源码

详细见代码。

63、平台水波效果

详细见代码。

64、Android拍照上传代码样例

如题,见代码。

65、模仿微信导航页效果源码

前面已经出现过,详细见代码。

66、拖动 Button 显示效果

一个button按钮 可以被拖动到任意位置,主要是通过Ontouch消息实现。

67、嵌套TabHost示例

对学习TabHost非常好的例子

68、开发 API人脸检测实例教程

通过两个主要的API,Android提供了一个直接在位图上进行脸部检测的方法,这两个API分别是 android.media.FaceDetector和android.media.FaceDetector.Face,已经包含在Android官方API中。

69、强行结束APP进程的方法

android.os.Process.killProcess(android.os.Process.myPid());

或System.exit(0);

70、精仿QQ设置界面

模仿了精仿QQ设置界面,学习界面的好例子。详细见代码。

71、图片阴影效果和影子效果

自绘实现。详细见代码。

72、天天动听 半透明Menu效果

自定义实现,详细见代码。

73、通过手势实现的缩放处理

前面已讲。

74、开发之 SD卡的使用

详细见文档。

75、模仿engadget菜单

使用TabHost实现的engadget菜单,详细见代码。

76、模仿UC等软件启动画面加载时闪烁点的样式

前面有类似。详细见代码。

77、调用Android中的软键盘

学习了InputMethodManager和EditView类。详细见代码。

78、网络通信的六种方式示例代码

针对TCP/IP的Socket、ServerSocket

针对UDP的DatagramSocket、DatagramPackage

针对直接URL的HttpURLConnection

Google集成了Apache HTTP客户端,可使用HTTP进行网络编程

使用Web Service。Android可以通过开源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去实现Webservice

直接使用WebView视图组件显示网页

79、客户端连接服务器并交互实例

如题,详细见代码。

80、商情商灵商测试系统源代码

主要使用了Sqlite数据库和listview.gridview控件的配合使用及其它控件

81、口袋微博 服务器 客户端代码

封装了一个Socket的类与服务的交互信息,自定了协议规则实现了客户端的对相册,日子等数据库的操作,功能有照相以及上传照片,登陆判断以及日子管理/注册等等,是学习的好例子。详细见代码。

82、悬浮Activity并可拖动(访悬浮歌词)

学习WindowManager、.LayoutParams类了。

83、一个登陆和注册界面

详细见代码。

84、用户注册,登录的简单实现

85、一个简单登录的DEMO

86、一个简单注册界面

前面已经涉及。

87、原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定

值得一提的是 interpolator的使用,PATH中使用了OvershootInterpolator以及AnticipateInterpolator。interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

88、五种不同的Toast效果

很好的学习了Toast类。详细见代码。开发可借鉴。

89、中文天气预报程序

Google天气预报的AIP。例如:http://www.google.com/ig/api?&weather=城市名(中文全拼),我发现在模拟器上面返回的结果和在pc上返回的结果不太一样,pc上有中文的,android模拟器上没有的。详细见代码。

90、一个短信应用源码

详细见代码。

91、基于股票的一个Android应用

详细见代码。

92、演化理解 Android 异步加载图片

Handler+Runnable模式

Handler+Thread+Message模式

Handler+ExecutorService(线程池)+MessageQueue模式

Handler+ExecutorService(线程池)+MessageQueue+缓存模式

详细见代码。

93、在Android远程上传以及下载图片---XFire框架

处理类集中在MyWebServiceHelper,它实现了远程获取和上传的细节功能。

里面有个FileOperate.java类,这个类负责对文件操作。

详细见代码。

94、指南针定位源码

开发一个检测方向的传感器,程序检测到手机顶部绕z转过的多少度,让指南针图片反转过多少度

95、语音识别,根据语音,执行对应操作

详细见文档,只是一种思路。

96、引用第三方库的方法

详细见代码。

97、一个支持暂停下载断点续传的源码

List<Map<String, Async>> listTask用来存放每一个正在进行的下载任务以及管理任务

重写了AsyncTask类用于执行下载

98、植物大战僵尸(简单版)

详细见代码哟。

99、一款查询软件(身份证号,号码归属等)源代码

此实例非常好,非常使用,在开发中可以借鉴啊。详细见代码。

100、新浪、腾讯、网易、搜狐微博OAuth认证整合Android版

很好的学习OAuth认证,掌握了帐号安全可靠。详细见代码。我们公司自己定义了一种规则,原理都是参考他们的。

101、微博客户端源代码

102、weibo4andriod

原理都差不多,详细搜索百度。

103、Android游戏源码——忍者快跑

详细见代码哟。

104、使用Vitamio打造自己的Android万能播放器——在线播放

虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式、性能等各方面都十分有限,这里与大家一起利用开源项目Vitamio来打造属于自己的

Android万能播放器!自己百度搜索吧。

105、音乐播放器源码(含歌词显示)

106、SeeJoPlayer(播放器 简单)

107、高仿多米音乐播放器

108、开发源码分享之在线音乐播放器完整项目

详细查看源码,文档就自己百度吧。不过像这些在线音乐的,他推荐一款开源的吧,很经典。

看下面开源的哟。

以下是开源项目(都在下载包中):

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自定义搜索了,应用自带中文,不过设置中含有部分英文。

本项目有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日起,任何用户输入有效电子邮件地址和自己的年龄段,即可加入。用户可以选择加入一个或以上网络,例如中学的、公司的、或地区的。

本项目有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);然后单独调用其绘制函数进行绘制。

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

12、飞行历 飞行模式 AirPlus

一款Android飞行模式自动切换工具,可以根据设定的时间自动进入和退出飞行模式,在无需关机的情况下让手机更加省电,减少睡眠时间手机的辐射作用。

支持功能

1.快速进入和快速退出飞行模式

2.自定义添加,删除,启用,禁用飞行时间段

3.设置自动切换飞行模式的时间和重复日期

4.设置控制不受飞行模式控制的无线硬件

5.设置是否在切换飞行时进行震动提示

6.进入切换飞行模式10秒钟提示(延迟飞行,立即飞行,取消飞行)

7.可以进行延迟飞行操作

8.检测通话状态,防止正在通话时切换飞行模式

9.设置延迟飞行的提醒间隔

10.设置音量键在飞行切换中的作用

本项目共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地图显示联系人的位置等信息。

本项目共25个目标文件,还有测试聊天程序7个目标文件,以及开发文档等,感兴趣的童靴好好研究下吧。

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 手机的一个小软件,它可以控制你在睡眠期间谁可以打电话进来打搅你,也可以定义其他唤醒事件,如果处于静音状态,该软件会给打电话的人发送一条你设定好的短信,告诉他别来打搅你的睡眠。

本项目共74 个目标文件。感兴趣的同学好好研究下。

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 —efault (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 —SP桥)

| |-- 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\是一些开发的例子,我现在正在看ndk的开发。



由于文件较大,所以分了几个包下载。

Android 初学中阶高阶书籍_集合打包1

Android 初学中阶高阶书籍_集合打包2
Android 初学中阶高阶书籍_集合打包3

Android 上百实例源码分析以及开源分析 集合打包1

Android 上百实例源码分析以及开源分析 集合打包2

Android 上百实例源码分析以及开源分析 集合打包3

Android 上百实例源码分析以及开源分析 集合打包4

2楼lonelyrains4天前 10:37
支持楼主,这篇文章真不错。
Re: banketree4天前 11:05
回复lonelyrainsn嗯 谢谢拉
1楼walker024天前 09:44
楼主给力啊
Re: banketree4天前 10:34
回复walker02n加油,提升别人就等于提升自己。

读书人网 >开源软件

热点推荐