博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Android

Android有关的技术文章
摘要:我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程。所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源。因为主线程的资源没有做同步处理。也就是我们一般说的线程同步问题。 我们做Android应用的时候,进程需要在一个子线程执行一些耗时的操作,例如下载、播放等。这种情况我们一般使用Handler和线程结合处理,子线程负责处理耗时操作,然后通知Handler处理UI更新。Handler和子线程结合处理适合对精度控制要求比较高或者任务耗时比较长或者比较反复的情况。除了Handler和线程结合使用,An... 阅读全文

posted @ 2013-07-15 20:05 泡泡糖 阅读(11213) 评论(2) 推荐(5) 编辑

摘要:上面一篇文章简单介绍了NFC的背景和技术应用,今天主要是讲解一下NFC如何发起通信和标签通信(主要是翻译android官网的资料,中间加入个人心得)。NFC总是在一个发起者和一个被动目标之间发生。发起者发出近场无线电波,这个近场可以给被动目标供电。这些被动的目标包括不需要电源的标签,卡,也可以是有电源的设备。拿我们手机来说,我们手机打开NFC功能后就是一个发起者,被动目标一般就是NFC标签。我们通过读取NFC标签内容,达到获取数据目的。 1、Tag发布系统 当android设备扫描到一个NFC tag,通用的行为是自动找最合适的Activity会处理这个tag Intent而不需要用户... 阅读全文

posted @ 2013-07-15 00:07 泡泡糖 阅读(2596) 评论(1) 推荐(0) 编辑

摘要:本来想分析AppsCustomizePagedView类,不过今天突然接到一个临时任务。客户反馈说机器界面的图标很难点击启动程序,经常点击了没有反应,Boss说要优先解决这问题。没办法,只能看看是怎么回事。今天分析一下Launcher启动APP的过程。从用户点击到程序启动的流程,下面针对WorkSpace上的快捷图标点击启动流程进行分析。(如果分不清WorkSpace是什么或者不知道快捷方式和其他图标区别,请看我前面的Launcher分析文章)PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434 下面我们先看看Launcher启动APP的大概流程:(鉴于很多转... 阅读全文

posted @ 2013-07-13 23:37 泡泡糖 阅读(11571) 评论(1) 推荐(2) 编辑

摘要:最近对NFC挺感兴趣,而且新换的手机也支持NFC功能(最近换了Find5,感觉还不错O(∩_∩)O),所以打算学学NFC编程。NFC就是我们经常说的近场通信。通常距离是4厘米或更短。NFC工作频率是13.56M Hz,传输速率是106kbit/s 到848kbit/s。不过网上查了一下,发现NFC的资料并不多,所以还是去看看android.developer上面的介绍和基本教程。下面资料主要是参考android官网,中间加入一些个人的心得笔记。1、NFC可以做的事情 NFC通信时是使用一种叫做NDEF的数据格式来通信,简单来说就是NFC芯片使用的一种通信协议。一般我们可以使用NFC完成下... 阅读全文

posted @ 2013-07-13 00:16 泡泡糖 阅读(3020) 评论(1) 推荐(0) 编辑

摘要:接着上一篇文章,继续分析AllAPP列表界面。上一篇文章分析了所有应用列表的界面构成以及如何通过配置文件修改属性。今天主要是分析PagedViewWithDraggableItems类,因为在我们分析AppsCustomizePagedView之前,需要先了解PagedViewWithDraggableItems。这是因为他们是继承关系。我们先看看AppsCustomizePagedView的类继承关系。(以后博客的图片都会加上水印,因为发现很多转载文章的人把所有作者信息都删除了,鄙视这种行为 ╭∩╮(︶︿︶)╭∩╮)1、触摸拦截 从上面的类关系图我们可以看到,我们今天需要分析的Page... 阅读全文

posted @ 2013-07-11 12:32 泡泡糖 阅读(7331) 评论(1) 推荐(4) 编辑

摘要:今天主要是分析一下Launcher里面的所有应用列表。Android4.0 Launcher的所有应用列表跟2.X比较大的区别就是多了Widget的显示。下面会详细分析Launcher里面有关所有应用列表配置和代码分析。1、AllApp列表配置文件配置AllAPP应用列表界面的配置文件是\res\Layout\apps_customize_pane.xml文件。AllAPP列表使用了一个TabHost组织了两个页面(全部应用和Widget),通过界面上面的TabHost进行切换。下面是TabHost的配置和AllAPP界面配置,我这里需要把Widget部分功能取消,因为我做的Launche.. 阅读全文

posted @ 2013-07-10 16:57 泡泡糖 阅读(14544) 评论(2) 推荐(2) 编辑

摘要:最近需要编写一个日期时间的桌面Widget用来关联日历程序,以前很少写桌面Widget。对这方面技术不是很熟悉,今天花时间重新整理了一下,顺便把编写一个简单时间日期程序过程记录下来。 桌面Widget其实就是一个显示一些信息的工具(现在也有人开发了一些有实际操作功能的widget。例如相机widget,可以直接桌面拍照)。不过总的来说,widget主要功能就是显示一些信息。我们今天编写一个很简单的作为widget,显示时间、日期、星期几等信息。需要显示时间信息,那就需要实时更新,一秒或者一分钟更新一次。 这个时间Widget我是参考(Android应用开发揭秘)书里面的一个demo例子... 阅读全文

posted @ 2013-07-08 11:12 泡泡糖 阅读(6492) 评论(4) 推荐(0) 编辑

摘要:本来打算分析CellLayout的源码,不过因为它们之间是容器包含关系,所以打算先把PagedView分析。PagedView代码很多,今天主要是分析跟核心功能相关的代码。PagedView主要实现一个功能——页面滑动。 PagedView继承了ViewGroup类,是一个容器类,可以包含第三方的View,实际上Launcher里面的PagedView主要就是包含了CellLayout的显示。对于一个View类来说,我们触摸屏幕界面,首先会触发View类的onInterceptTouchEvent()回调函数。这个函数负责处理原始的消息驱动,决定是拦截消息还是传给上层的View。这个涉及... 阅读全文

posted @ 2013-07-05 19:32 泡泡糖 阅读(13879) 评论(0) 推荐(8) 编辑

摘要:今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我这里的运行环境类似平板,系统默认把HotSeat去掉了。办法,只能自己想办法把它弄出来,所以今天主要是分析如何在你Launcher上添加HotSeat以及分析HotSeat实现。 Hotseat配置是通过配置文件控制的,一般来说,你需不需要Hotseat只要在配件文件里面写一下就OK,不过Hotseat有一个比较麻烦的地方,就是需要注意横屏还是竖屏。默认竖屏的时候,Hotseat是屏幕底下的... 阅读全文

posted @ 2013-07-04 21:14 泡泡糖 阅读(12169) 评论(1) 推荐(0) 编辑

摘要:今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下。这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品。现在工作需要,重新拿出来修整。同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来。 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据。NMEA是一种标准化数据格式,不仅仅GPS上应用了,其他一些工业通信也是使用这种标准化数据格式。解析相关数据然后显示出来... 阅读全文

posted @ 2013-07-02 23:37 泡泡糖 阅读(14319) 评论(18) 推荐(3) 编辑

摘要:上面一篇文章说了Launcher是如何被启动的,Launcher启动的过程主要是加载界面数据然后显示出来,界面数据都是系统APP有关的数据,都是从Launcher的数据库读取,下面我们详细分析Launcher如何加载数据。在Launcher.java的onCreate()方法里面,调用了开始加载数据接口://Edited by mythou//http://www.cnblogs.com/mythou///加载启动数据if (!mRestoring) { mModel.startLoader(this, true);}mModel是LauncherModel的对象,由此可见,数据加载... 阅读全文

posted @ 2013-07-02 17:32 泡泡糖 阅读(11310) 评论(4) 推荐(3) 编辑

摘要:这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库。Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库。我11年的时候也弄过视频播放器,当时也是基于FFMpeg来做。那时候网上有关Android视频解码库的资料不多,只在git上找到一个人移植FFMpeg,把它弄下来编译,有兴趣可以看看当时的文章:Android 视频播放器 faplayer 编译。言归正传,今天的主角是大名鼎鼎的VLC,做过视频播放器的人,应该都听过它大名,基本上所有平台都有它的身影。Android上今年也发布了beta版。这次编译不太顺利,主 阅读全文

posted @ 2013-06-30 18:17 泡泡糖 阅读(24488) 评论(26) 推荐(2) 编辑

摘要:前面两篇文章都是写有关Launcher配置文件的修改,代码方面涉及不多,今天开始进入Launcher代码分析。我们开机启动Launcher,Launcher是由ActivityManager启动的,而ActivityManager是由systemserver启动。原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3157452.html1、Launcher进程启动过程可以由下面图看到Launcher进程是如何被创建启动:Activity Manager通过发送Intend来启动Launcher。//Edited by mythou//http://www 阅读全文

posted @ 2013-06-27 13:02 泡泡糖 阅读(17854) 评论(1) 推荐(2) 编辑

摘要:上一篇文章说了如何修改Android自带Launcher2的默认界面设置(http://www.cnblogs.com/mythou/p/3153880.html)。 今天主要是说说Launcher里面图标、布局、壁纸等的设置问题。毕竟我们一般修改Launcher,这些都是需要修改的地方,也是比较容易修改的部分。按照效果图(效果图在上一篇文章),分开说明如何修改,以及里面涉及的逻辑分析。原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3155692.html1、图标大小和标题大小 Android原生图标大小都是通过配置文件设置,配置文件路径是/... 阅读全文

posted @ 2013-06-25 23:38 泡泡糖 阅读(26386) 评论(1) 推荐(4) 编辑

摘要:最近工作都在修改Launcher,所以打算把分析源码和修改源码的过程记录下来,最近会写一些关于Launcher的分析和修改博文。因为我是修改4.0.3的Launcher,所以后面文章里面的Launcher都是基于Android4.0.3的Launcher2修改。Launcher源码比较多,而且里面应用了很多设计模式,要把它分析清楚要花不少精力,网上也有一些零碎的分析文章,不过关于修改的文章不多。所以打算写一些分析和修改Launcher结合的文章。原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3153880.html 今天主要是分析修改Launche. 阅读全文

posted @ 2013-06-24 23:17 泡泡糖 阅读(45732) 评论(8) 推荐(5) 编辑

摘要:Android下面使用命令行截图。因为工作调试用的机器,没法连接USB,所以用不了一般的截图方法,后来查了一下,Android4.0以后都内置了截图命令。可以使用下面命令截取屏幕。screencap /mnt/card/test.png这是我在linux shell下执行的命令执行完就可以把当前屏幕图片保存到SD卡里面(具体路径根据你实际开发机器来看)除了screencap,还有screenshot,不过试验后,发现截图都是空白的,网上查资料是可以用来截图。也可能是我这边机器环境问题。 阅读全文

posted @ 2013-06-24 15:55 泡泡糖 阅读(11900) 评论(0) 推荐(0) 编辑

摘要:Android里面可以通过终端使用AM命令启动某个指定的Activity。工作中因为新开发的机器需要进行屏幕坐标校准,机器因为还没调试好,每次坐标校准都没有出现,机器使用不了,只能通过终端调用坐标校准的Activity启动。例如启动coordinate.apk的主activityam start -n com.apical.apicalcoordinate/com.apical.apicalcoordinate.coordinateActivity其中com.apical.apicalcoordinate是应用Activity所在的包名。usage: am [subcommand] [opti 阅读全文

posted @ 2013-06-12 00:07 泡泡糖 阅读(904) 评论(0) 推荐(0) 编辑

摘要:一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,,会收到Android系统的一个错误提示 "强制关闭". 这个时候我 阅读全文

posted @ 2013-06-11 23:57 泡泡糖 阅读(311) 评论(0) 推荐(0) 编辑

摘要:Android 对于Layout相关的布局属性说明:第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft 贴紧父元素的左边缘android:layout_alignParentRight 贴紧父元素的右边缘android:layout_alignPare 阅读全文

posted @ 2013-06-11 23:53 泡泡糖 阅读(1670) 评论(0) 推荐(1) 编辑

摘要:一般在开发的时候需要用到ADB 的shell 命令。就我个人开发来说,除了一些ADB命令外,其实Linux的基本命令也十分重要,特别是在终端调试的时候。加入你的而开发环境接了串口,在串口终端使用Linux的命令调试也是十分有用和很有必要,例如cp 和 rm命令就能实现安装和删除某个apk安装包。下面是ADB一些常用的命令:adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序。借助这个工具,我们可以管理设备或手机模拟 阅读全文

posted @ 2013-06-11 23:48 泡泡糖 阅读(842) 评论(0) 推荐(0) 编辑