ASCE1885的Android学习研究
文章平均质量分 93
ACE1985
这个作者很懒,什么都没留下…
展开
-
Android RIL源码研究笔记 の ril_event
Android源码目录hardware/ril/libril目录中总共包含5个C/CPP文件,它们分别是ril_commands.h、ril_unsol_commands.h、ril_event.h、ril_event.cpp和ril.cpp。这篇文章主要分析ril_event的相关代码。 ril_event主要处理电话模块涉及的端口、modem等产生的事件,并将多个事件按时间顺序进行组织原创 2011-12-05 00:30:32 · 3242 阅读 · 0 评论 -
Android RIL源码研究笔记 の ril_command (一)
Android源码目录hardware/ril/libril中总共包含5个C/CPP文件,它们分别是ril_commands.h、ril_unsol_commands.h、ril_event.h、ril_event.cpp和ril.cpp。这篇文章主要分析commands相关的两个头文件,这两个文件主要定义了所有telephony可以接收的命令或者响应的事件类型,以及相应的处理函数。原创 2011-12-07 22:08:27 · 4219 阅读 · 0 评论 -
Android RIL源码研究笔记 の ril (二)
这篇文章介绍ril.cpp中实现部分代码中的四个字符串输出函数及其相应的枚举类型。首先看requestToString()函数的代码,它的功能是将将ril_command.h和ril_unsol_commands.h中的命令转换成字符串描述: const char * requestToString(int request) { switch(request) {原创 2011-12-09 21:52:08 · 4619 阅读 · 0 评论 -
Android图像处理简介の使用内置Camera应用程序进行图像捕获
Android中可以简单直接地使用intent来获取已安装应用软件提供的功能,它是Android的关键组件之一,主要作用有两个:一是触发其他应用程序提供的功能;二是在单个应用程序中实现Activity之间的切换。软件开发人员使用intent filter来声明应用程序提供某种特定功能,这个声明是在AndroidManifest.xml中进行的,例如,内置的Camera应用在它的manifest翻译 2011-12-18 15:03:34 · 6307 阅读 · 2 评论 -
Android图像处理简介の图像存储和元数据
Android提供Content Provider来实现应用程序之间的数据共享,provider提供了标准的接口用于存储和检索多种类型的数据。图像 、音频和视频的标准content provider就是MediaStore。1)获取图像的URI要获得标准的图像存储路径,我们需要获得MediaStore的引用,而这是通过content resolver来实现的(因为使用Content res翻译 2011-12-18 18:39:17 · 3004 阅读 · 0 评论 -
Android RIL源码研究笔记 の ril (一)
Android源码目录hardware/ril/libril中总共包含5个C/CPP文件,它们分别是ril_commands.h、ril_unsol_commands.h、ril_event.h、ril_event.cpp和ril.cpp。这篇文章主要分析ril.cpp文件。 我们可以将该文件划分为定义部分和实现部分,先来看定义部分: #define LOG_TAG "RILC"原创 2011-12-09 00:18:01 · 2819 阅读 · 0 评论 -
访问Android硬件资源の控制设备的振动
手机设备振动是向用户反馈信息的一种很好的方法,特别是在游戏应用中得到了极大的发挥。要控制设备的振动,我们的应用程序需要获得许可,即在AndroidManifest.xml文件中添加如下代码:设备振动是通过Vibrator类来实现的,获取这个类实例的代码如下:String vibratorService = Context.VIBRATOR_SERVICE;Vibrator vibr翻译 2012-01-09 23:36:49 · 1711 阅读 · 0 评论 -
访问Android硬件资源の管理网络和Wifi连接
(1)ConnectivityManager在Android中,ConnectivityManager类代表网络连接服务,它被用来监控网络连接状态,配置失效重连,并控制网络天线等。获取Connectivity Manager实例的方法是使用getSystemService,并指定Context.CONNECTIVITY_SERVICE作为参数,代码片段如下:String cserviceN翻译 2012-01-06 00:53:23 · 3588 阅读 · 0 评论 -
Android中不同包路径下Activity跳转的实现(解决ActivityNotFoundException)
初学者在尝试位于不同Java包目录下Activity之间的跳转时,经常会在运行时得到ActivityNotFoundException,下面就来看看不同包目录下Activity跳转的实现。首先,我们创建两个Activity:JumpTestActivity和JumpTestActivity2,JumpTestActivity中有个按钮,当用户按下时会跳转到JumpTestActivity2原创 2012-02-10 23:39:26 · 8586 阅读 · 1 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(二)
本文分析两个类:程序中用到的数据类PanoramioItem,以及工具类BitmapUtils。1)Parcelable接口和PanoramioItem类任何类如果希望自己的实例能够写入到Parcel中或者从Parcel中恢复出来,都必须实现Parcelable接口,实现这个接口的类除了要重写接口中定义的函数,还需要定义一个名为CREATOR的静态域,而CREATOR是实现Parcelab原创 2012-02-22 00:07:05 · 3199 阅读 · 1 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(一)
Panoramio是一个照片分享社群,网址是http://www.panoramio.com/,现在被google收购了。注册之后就可以上传自己的照片,这些照片上传后可以在卫星地图上进行定位,经过审核的照片将有可能出现在Google Earth上,网站的宗旨是以照片发掘全世界,网站的logo如下:本文将要学习的开源代码也叫Panoramio,它实现的功能就是根据用户在地图上选择的地原创 2012-02-20 23:32:33 · 3681 阅读 · 1 评论 -
Android Framework中的PolicyManager简介
PolicyManager类位于framework\base\core\java\com\android\internal\policy目录中的PolicyManager.java文件中。PolicyManager主要用于创建Window类、LayoutInflater类和WindowManagerPolicy类,它扮演着简单工厂模式中的工厂类角色,而抽象产品角色由IPolicy接口实现,具体产品原创 2012-02-12 21:11:50 · 6850 阅读 · 3 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(三)
本文介绍程序主界面的实现,对应的文件是Panoramio.java,主界面提供给用户从地图上选择搜索区域的功能,因此,直接从MapActivity继承,并实现OnClickListener接口。这样一来,这个类的初始框架如下代码所示:import com.google.android.maps.MapActivity;import android.os.Bundle;import and原创 2012-02-22 23:49:43 · 2508 阅读 · 0 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(四)
本文继续讲解Panoramio的实现,主要介绍ImageAdapter.java和ImageList.java 这两个文件,这两个文件实现了如下所示的界面,左图是数据从网络加载过程中,有图是加载完成后的效果: ImageAdapter继承自BaseAdapter类,实现图片适配器的功能,而ImageList则继承自ListA原创 2012-02-23 23:44:54 · 5568 阅读 · 5 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(六)
本文介绍文件ViewImage.java和ViewMap.java。前者实现单张图片信息的浏览,后者实现自定义的地图,用于显示图片拍摄地点和用户当前所在地点。ViewImage实现的Activity界面如左下图,点击手机的菜单键时,弹出菜单选项界面如右下图:原创 2012-02-26 10:59:00 · 2573 阅读 · 0 评论 -
Android开源代码解读の地图照片应用Panoramio的实现详解(五)
在前面几篇文章中,我们或多或少了解到了ImageManager类的存在,它负责从Panoramio服务器下载搜索区域内的图片数据,同时进行解析。当然,这一切是在独立的后台线程中进行的,下载的情况通过观察者模式通告给ImageList进行显示(ImageManager是被观察对象Subject)。注意,ImageManager是一个单例类。本文涉及到的知识点有两个:JSON和WeakRefere原创 2012-02-25 00:31:08 · 2844 阅读 · 1 评论 -
Android开源代码解读の使用TelephonyManager获取移动网络信息
本文介绍使用TelephonyManager来获取手机SIM卡的状态和移动网络的相关信息,主要使用了TelephonyManager.listen函数,这个函数源码如下:public void listen(PhoneStateListener listener, int events) { String pkgForDebug = mContext != null ? mCont原创 2012-02-18 14:10:28 · 4841 阅读 · 1 评论 -
Android各种开源项目源代码的下载方法(Subversion/Git/Mercurial)
开源项目几乎都使用版本控制系统来对代码进行维护,著名的版本控制软件有诸如CVS、Rational ClearCase、Microsoft Visual SourceSafe、Git、Subversion、Mercurial等等,数不胜数。当然上面有的是商业软件,有的是开源软件,对于我们单纯下载代码而言,其实没有多大区别,关键要看你需要下载的开源代码它是基于何种版本控制系统的进行维护的,本文就以Su原创 2012-02-27 21:50:43 · 4541 阅读 · 0 评论 -
Android开源代码解读のOnScrollListener实现ListActivity滚屏首字母提示
OnScrollListener接口是定义在AbsListView中的,而AbsListView的直接子类有GridView和ListView,非直接子类有ExpandableListView。OnScrollListener的完整路径是frameworks\base\core\java\android\widget\AbsListView.java,代码如下:/** * Interfa原创 2012-02-19 19:22:22 · 3816 阅读 · 1 评论 -
Android开源代码解读のOnScrollListener实现ListView滚屏时不加载数据
使用ListView过程中,如果滚动加载数据的操作比较费时,很容易在滚屏时出现屏幕卡住的现象,一个解决的办法就是不要在滚动时加载数据,而是等到滚动停止后再进行数据的加载。这同样要实现OnScrollListener接口,关于该接口的简要描述见上一篇文章,这里直接进行代码的分析:package hust.iprai.asce1885;import android.app.ListActi原创 2012-02-19 21:37:50 · 4950 阅读 · 1 评论 -
Android中PopupWindow自定义坐标实现
Android中PopupWindow位置的确定一般通过showAsDropDown函数来实现,该函数有两个重载函数,分别定义如下: public void showAsDropDown(View anchor) { showAsDropDown(anchor, 0, 0); } public void showAsDropDown(View anc原创 2012-06-02 22:27:55 · 14674 阅读 · 4 评论 -
Android自定义状态栏通知(Status Notification)的正确实现
在Android应用开发中,经常会使用到状态栏通知(Status Notification),例如新浪微博、网易新闻等提供的推送消息,软件后台更新时进度的显示等等,如下图所示:看了网上很多关于Notification的博客文章,发现几乎没有一个能将自定义状态栏通知完全实现正确的,因此,本文就来说说实现自定义状态栏通知经常被忽略的一些知识点。1) 使用Notification原创 2012-07-30 16:39:54 · 23879 阅读 · 5 评论 -
Android应用中意见反馈功能的探讨与实现
很多Android应用的都提供了“意见反馈”功能,便于收集用户对该产品的建议,今天就来研究下现在市面上的“意见反馈”功能的实现形式,以91手机助手,网易新闻和布卡漫画为例,相应的有三种不同的形式:1)91手机助手(滚动型)主界面使用ScrollView实现,软键盘会覆盖界面下方的内容,需要滚动才能看到下面的输入框等信息,适合反馈界面信息量比较多的情况。同时在标题栏的右边有个客服答复按钮,能原创 2012-07-23 22:56:46 · 15364 阅读 · 6 评论 -
Android代码中实现WAP方式联网
无论是移动、联通还是电信,都至少提供了两种类型的的APN:WAP方式和NET方式。其中NET方式跟WIFI方式一样,无需任何设置,可自由访问所有类型网站,而WAP方式,需要手机先设置代理服务器和端口号等信息,并且只能访问HTTP协议类型的网站。1) 移动的WAP名称是CMWAP,NET名称是CMNET;2) 联通的WAP名称是UNIWAP,NET名称是UNINET;联通3G的WAP名称是3原创 2012-08-08 16:52:14 · 15698 阅读 · 5 评论 -
Android中HandlerThread类的解析
Android应用中的消息循环由Looper和Handler配合完成,Looper类用于封装消息循环,类中有个MessageQueue消息队列;Handler类封装了消息投递和消息处理等功能。系统默认情况下只有主线程(即UI线程)绑定Looper对象,因此在主线程中可以直接创建Handler的实例,但是在子线程中就不能直接new出Handler的实例了,因为子线程默认并没有Looper对象,此原创 2012-08-06 15:56:06 · 3099 阅读 · 4 评论 -
百度贴吧布局框架的研究与实现(Android版本)
还记得几个月前刚接触“百度贴吧”这款应用时,瞬间就被它的悬浮式标题栏以及标签栏所吸引,虽然当时身边有个UI的MM说悬浮式一般都是具备隐藏的功能时才设计成这样的,一般情况下还是用直通式的好,在这里我也不讨论孰优孰劣,截取两个图,大家自己品味下。悬浮式标题栏和标签栏:(百度贴吧);直通式标题栏和标签栏:(QQ空间) 本文的目的就是研究下百度贴吧的这个标题栏和标签栏的实现原理;1、原创 2012-08-02 20:03:32 · 4493 阅读 · 1 评论 -
Android系统中长按事件的实现机制解析
在Android的触摸消息中,已经实现了三种监测,它们分别是1)pre-pressed:对应的语义是用户轻触(tap)了屏幕2)pressed:对应的语义是用户点击(press)了屏幕3)long pressed:对应的语义是用户长按(long press)了屏幕下图是触摸消息随时间变化的时间轴示意图:其中,t0和t1定义在ViewConfiguration类中,标识了原创 2012-08-11 21:33:55 · 4536 阅读 · 0 评论 -
Android开源项目-Jamendo音乐播放器研究与优化-AndroidManifest文件和Application类
【音的特性有四种:音高、音长、音量和音色】 --- 《五线谱基础教程》 Android项目的分析一般从AndroidManifest.xml文件开始,从这个文件我们可以一窥这个app定义的activity、service等四大组件的配置,以及使用的sdk版本和声明的权限等信息。 一 标签的顺序问题 首先使用Android Lint工具检查下这个配置文件,我们发现出现了一个l原创 2012-08-19 13:34:58 · 6636 阅读 · 6 评论 -
Android开源项目-Jamendo音乐播放器研究与优化-开篇
【Jamendo是一个音乐平台与社群网站。Jamendo上的所有音乐都使用Creative Commons授权或自由艺术授权,这使得任何人可以免费下载,而且复制与分享的行为都是合法的。根据所使用的授权类型,对歌曲进行修改或者商业使用也都可行。Jamendo允许使用者透过串流方式,以收听Ogg Vorbis或MP3格式的音乐,并能透过BitTorrent与eDonkey网络下载音乐档案。】 ---原创 2012-08-18 18:26:19 · 9490 阅读 · 4 评论 -
Android开源项目-Jamendo音乐播放器研究与优化-手势操作
【五线谱上确定音的高低的记号叫做谱号,谱号有三种:G谱号(高音谱号)、F谱号(低音谱号)和C谱号(中音谱号)】 --- 《五线谱基础教程》 Jamendo的手势操作用于控制歌曲的播放,有四个手势分别对应:播放,暂停,上一首和下一首。本文主要讲解手势操作部分的实现,至于涉及到媒体播放器的部分,将不作细讲,放在后续文章中。 一 Android手势操作APIAndroid提供原创 2012-08-20 23:56:30 · 5167 阅读 · 3 评论 -
Android面试题精选
问:怎样在Http连接中设置超时和代理?Http连接的超时机制能够防止连接线程的无限期等待,一般可分为connect timeout和socket timeout,在Android中可以使用HttpClient和HttpURLConnection建立Http连接,因此存在两种设置超时的方式,首先Socket等待建立连接的超时时间和Socket输入流等待数据到达的超时时间设置如下: priv原创 2012-08-11 17:12:20 · 4442 阅读 · 0 评论 -
Android开源项目-Jamendo音乐播放器研究与优化-基于Builder模式的数据库操作
【一个音符的时值按二等分的原则,成偶数细分下去,称为音符时值的基本划分】--- 《五线谱基础教程》对于一个完整的应用来说,数据库操作往往是避免不了的,Jamendo基于生成器模式(Builder Pattern)构建数据库操作的整个框架。那么首先看下生成器模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。典型结构图如下所示:原创 2012-09-01 19:26:31 · 3205 阅读 · 3 评论 -
Android开源项目-Jamendo音乐播放器研究与优化-Adapter相关
【休止符是音乐中无声的节奏进行,恰似此时无声胜有声;而音符是音乐中有声的进行,是唱奏出来的,但相对应的几分音符与几分休止符的时值是相同的】--- 《五线谱基础教程》一 自定义Adapter的抽象基类Android项目开发中经常会用到ListView、GridView等需要和Adapter配合使用的控件,对于界面界面较多,且用到多个不同布局的ListView等时,自然而然的就原创 2012-08-23 23:37:36 · 3804 阅读 · 2 评论 -
UPnP协议学习笔记-简介
【什么是UPnP技术?】 UPnP(Universal Plug and Play)技术是针对智能家电、无线设备和各种类型的个人电脑进行普遍点对点(P2P)网络连接而设计的一种架构。它被设计为连接到ad-hoc或者非托管网络的家庭、小型企业、公共场所,提供易用、灵活、基于标准的连接。UPnP技术是一个利用TCP/IP和网络技术实现的分布式的开放网络架构,它除了提供网络设备间的控制和数据传输原创 2012-09-14 00:07:21 · 5057 阅读 · 0 评论 -
UPnP协议学习笔记-寻址
寻址(Addressing)是UPnP网络连接的第0步,通过寻址,设备和控制点将获得IP地址。UPnP设备和控制点可以只支持IPv4,也可以同时支持IPv4和IPv6。对于每个控制设备或控制点而言,如果自身没有实现DHCP服务器,则在它们首次接入UPnP网络时,必须通过DHCP客户端来搜寻DHCP服务器(如果它们自身实现了DHCP服务器,则可以给自己从地址池中分配IP地址)。如果存在DHCP服务器原创 2012-09-15 11:26:17 · 3059 阅读 · 0 评论 -
Android开源代码解读-基于SackOfViewAdapter类实现类似状态通知栏的布局
一般来说,ListView的列表项都会采用相同的布局,只是填充的内容不同而已,这种情况下,Android提供了convertView帮我们缓存列表项,达到循环利用的目的,开发者也会使用ViewHolder模式来对ListView进行优化。但有的情况下,ListView的列表项布局是不尽相同的,甚至差别很大,这时就不能简单的使用同一个布局资源文件来表示不同类型的列表项了,而是必须区别对待。典型的情况原创 2012-09-17 16:42:49 · 3302 阅读 · 3 评论 -
Android事件处理的两种模型
UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理。对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事件监听器;对于基于回调的事件处理而言,主要做法是重写Android组件特定的回调函数,Android大部分界面组件都提供了事件响应的回调函数,我们只要重写它们就行。一 基于监听器的事件处理原创 2012-05-24 01:05:33 · 8290 阅读 · 0 评论 -
Android调用系统邮件类应用的正确实现方法
Android应用开发中,很多情况下免不了要调用手机上的邮件类应用,实现邮件发送的功能,这一般是通过调用系统已有的Intent来实现的。看到网上很多邮件发送都是调用action为android.content.Intent.ACTION_SEND的Intent来实现的,下面我们就来看下这种方式实现的效果如何。【使用Intent.ACTION_SEND方式】具体的UI搭建我就不说了,原创 2012-10-27 23:27:26 · 12868 阅读 · 3 评论 -
Android字数限制的EditText实现方案研究
在应用开发中,有时需要实现有字数限制的EditText,首先来分析下市面上存在的类似实现方案吧,好有个感性的认识。【方案一:腾讯微博】每个中文字符算一个字数,每两个英文字符算一个字数,当用户输入内容时,实时显示剩余的字数,当超出字数限制时,剩余字数显示为负数,但此时用户仍然可以继续在EditText中输入内容,直到用户点击菜单中的“发送”按钮时,才会弹出对话框或者Toast显示用户原创 2012-11-11 23:58:14 · 18157 阅读 · 23 评论 -
Android基于WIFI实现电脑和手机间数据传输的技术方案研究
Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案:一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器;一种是通过http协议实现。Android手机作为数据传输过程中的http服务器。所以,技术实现的难点在于我们的app怎么实现ftp或者http服务器的功能,当然可以自己先阅读ftp协议或者http协议,根据规范自己实现一个,如果原创 2013-02-03 12:10:44 · 17397 阅读 · 4 评论