自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android 6.0 动态申请权限

从6.0开始,谷歌从苹果那里学习了iOS的动态申请权限这一套(或者是从其他ROM那里借鉴的)。于是,我们的app就不能安装上就一劳永逸了,需要在运行过程要用到某个权限的时候先检查权限是否获取,否的话还要动态申请。下面整理用代码说明一下整个过程。首先仍然要在menifest.xml中标明需要申请的权限,这里以读取联系人为例。App需要设置target SDK为23(Android6.0)。<uses-

2015-12-17 17:23:53 1119

原创 Android Animation学习笔记

一,View AnimationView Animation是Android早期的动画系统,它包括Tween Animation以及Frame Animation 1,Tween Animation: 补间动画,使用资源定义的时候放到res/anim目录 2,Frame Animation:帧动画,使用资源定义的时候放到res/drawable目录。可以直接指定为某个ImageView的andr

2015-12-09 16:45:25 721

原创 Android手机AP模式下本机IP

至今为止Android没有官方IP获取AP模式下的IP的接口,而且由于Android的开放性,各个厂商都发挥自己的想象力修改framework。所以默认的IP并不一定就是AP模式下的IP,要获取真实的IP就要另外想办法了。先检查Wifi是否处于AP模式,然后运行下述代码: private String getIP() { // default IP for most devic

2015-12-07 14:14:31 3226

原创 【Service 1】Android Remote Service - AIDL

背景Service作为Android的四大套件,其作用以及重要性都不必多说。在使用的过程中,UI模块(Activity)与Service的通讯是一个重要的话题。Activity和Service的关系可以分为两种:Activity与Service共享一个process,这种应该是最常见的情况。Activity与Service不在同一个process中,如果它们在同一个app中但Service在ma

2015-12-04 11:21:44 1693

原创 【support包学习】DrawerLayout的使用

为了让开发者能更快更好的进行安卓app开发(或者是为了填坑),谷歌推出了一系列的support package给广大开发者使用。从最早的v4到现在的v21,里面包括了很多好用的UI控件例如ViewPager以及工具类。本系列仅用于记录support包各个常用模块的学习过程。曾几何时,对于我这种UI生手来说为app实现侧边栏有着相当的工作量,现如今谷人希在v4包里面为我们带来了利器DrawerLayo

2015-11-24 09:43:16 681

原创 Java New Thread start() 与 run()的区别

考虑下面两个代码片段:代码1:{ @Override public void run() { //background task? }}).run();代码2:{ @Override public void run() { //background task? }}).start();代码1中使用了run

2015-10-20 11:29:01 4246

原创 SBJson 4.0.1 自定义类与JSON String互转

一,类转换为json string1,如果是NSString, NSNumber, NSArray, NSDictionary或者NSNull类型的话,可以直接使用如下语句转为可读的JSON String:SBJson4Writer *jsonWriter = [[SBJson4Writer alloc] init];NSString *jsonStr = [jsonWriter str

2015-05-12 09:56:42 1954

原创 XCode 6.1.x 多台MAC共用个人开发者账号

由于自己只开通了一个苹果开发者账号,又想在自己的macbook和公司的mac mini上都能在真机上调试。所以上网查了资料,查到的都是旧的方法,需要从钥匙串管理那里把私钥导出来然后从XCode里面把provision file导出来等等。但是在6.1.2上已经没有导出provision file导出这个选项了,最终还是从apple的官网那里找到了方法,原来苹果是把这个流程给简化了。前提

2015-03-14 00:27:50 2041

原创 创建自己的pk8, x509.pem并给app签名

1, 生成key命令: keytool -genkey -v -keystore app.keystore -alias gundam_wing -keyalg RSA -validity 20000控制台输出:输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么?[Unknown]: TechStone您的组织单位名称是什么?[Unknown]

2015-01-16 10:28:10 7399

原创 Android 4.4.x Notification 的坑 - 设置deleteIntent不生效

项目里面需要监测用户从状态栏移除(滑动/点击X关掉)notification的事件,但是发现在Android 4.4.x版本手机上我们收不到移除事件触发的intent。设置deleteIntent的代码如下:        Notification pushNotification = new Notification(                R.drawable.ic

2014-12-31 00:52:03 4724

原创 Android JAR包手动混淆操作

当你的jar包需要给第三方开发者使用或者是app要发布的时候,java的混淆技术可以隐藏一定的技术细节。通过适当的配置文件可以把jar包需要开放的接口或者公开API暴露出来,从而不影响正常的使用。无论是使用eclipse的集成环境还是直接使用proguard命令行进行混淆,都需要一个配置文件,在eclipse中是project根目录下的proguard-project.txt。

2014-10-20 15:43:07 1347

原创 android应用开发中state machine的使用

最开始接触到安卓StateMachine的时候还在做底层驱动开发和

2014-10-14 23:19:54 3000

原创 64位ubuntu找不到libgtk-x11-2.0.so解决方法

想在64位ubuntu 14.04上使用jd-gui,结果运行报错:找不到libgtk-x11-2.0.so上网搜了一圈的

2014-09-18 16:44:54 4640 1

转载 SDK Manager.exe闪退问题的解决

转自: http://www.cnblogs.com/badtree/articles/2941132.html【故障描述】做 Android 开发就要下载 Android SDK,其中的 SDK Manager.exe 无法启动,一闪而过。尝试重装 JDK、重新从官网下载 Android SDK、添加环境变量等等均无效。而且,有些版本的没事,有些版本的就不行。下载的 an

2013-12-31 10:45:26 6873

原创 QQ2013导致adb不能使用问题的修复

由于实在没法不用QQ,当QQ哭着闹着要升级到最新版的时候,手欠的点了升级到了2013的最新版。然后电脑连接安卓手机的时候问题来了,在控制台输入adb devices提示:adb server is out of date.  killing...ADB server didn't ACK然后QQ很好心的提示安装它的手机管家可以方便的管理安卓手机,赶紧开打任务管理器,发现有个

2013-08-16 15:29:16 1815 2

原创 LOCAL_WHOLE_STATIC_LIBRARIES与LOCAL_STATIC_LIBRARIES的区别

在分析Jelly Bean Audio Subsystem的时候,发现HAL层的库audio_policy.xxx.so与其依赖的静态库libaudiopolicy_legacy.a都有audio_policy_hal.cpp这个源文件而且两者都定义了一个HMI。当调用者引用HMI的时候,调用的究竟是哪个呢?首先看audio_policy.xxx.so的Android.mk文件,在定义

2013-08-05 11:34:16 21020 3

原创 ADB over WiFi

adb除了通过usb连接外,还可以通过tcp连接建立调试,在某些定制的ROM和android 4.1或以上版本都已经内置了adb over wifi的支持。如果你的手机属于上述两种情况的话可以略过此文。下边把需要调试的机器称为target,把adb主控端称为host,手动设置adb over wifi的过程如下:target端和host端连接到同一个路由(必须处于同一个网段

2013-05-03 17:15:23 2658

原创 Setup Building Environment for Android ICS/FireFox OS from and clean Ubuntu10.04 LTS

1, in “system -> administration -> software sources”“ubuntu software” tab: download from “Main Server”“updates” tab: check “important security updates” and “recommended updates”2, runsud

2013-04-14 22:42:07 1101

原创 解包system.img, cache.img,修改并重新打包

1,解包三星的galaxy s2/S3/note等手机的官方odin线刷包是tar压缩,里面的system.img与cache.img等如果在linux下用file命令看,都是data格式。所以解包成有如下几个步骤> tar -xvf KIES_HOME_I9300ZSDLK4.tar  解压tar包> simg2img cache.img cache.img.

2013-04-10 20:46:23 9229

原创 【framework】EventLog分析

在frameworks/base的源码中看到几个很奇怪的EventLogTags.logtags文件,丫竟然还能作为src参与编译,百思不得其解之下只好埋头看源码,记录如下。system/core/logcat/event.logtags文件是说明每个tag的格式的以及部分测试用的log tag,说明如下:1 # The entries in this file map a s

2013-01-07 16:14:09 13148 3

原创 android App中的网络访问

单机app在android的生态环境中几乎没有立足之地,因此app获取网络访问权的能力是必不可少的,本文除了代码之外还包括一些注意事项(可能是太基础了所以书上或者其他参考网站都没有提及这些细节)。一,在AndroidManifest.xml中加入访问互联网的权限:二,访问互联网的操作不能在main thread (对于activity来说是UI thread)中进行,否

2012-12-25 11:17:19 2736

原创 ubuntu 10.04 使能新设备的adb功能

linux系统不认终端adb端口有两种情况,一是终端的vID和pID在udev的rules里面没有对应项,在http://blog.csdn.net/yang_hui1986527/article/details/7665989#comments的文章提到了怎么解决这个问题。另外一种情况是,终端映射出来的vID和pID不是adb interface的vID/pID:目前的手

2012-06-25 17:28:59 2575

原创 boot.img与recovery.img的解包

boot.img与recovery.img的结构很相似,都是kernel加上一个根文件系统。所以是可以用同一个工具(脚本)来分解,下面以分解boot.img为例分析如下:1, cat /dev/block/mtdblock0 > /sdcard/boot.img    不同的机型可能对应着不同的分区,需要先核实2, split_bootimg.pl boot.img

2012-05-11 21:16:17 12245 2

原创 standards of 4 pole headset OMTP/CTIA

以前从来没有注意过这个问题,就是四段耳机还有两个现存的主要标准OMTP/CTIA:3.5mm音频插孔的开放移动终端平台(OMTP) L/R/M/G,以及移动通信行业协会(CTIA) L/R/G/M插孔引脚对应标准。其主要区别就是MIC和GND pin的位置:

2012-04-13 14:45:47 9097 1

原创 Android UEventObserver

UEventObserver是android Java层利用uevent与获取Kernel层状态变化的机制。通过grep发现framework有如下模块使用UEventObserver的功能来提供服务:电池状态:services/java/com/android/server/BatteryService.java耳机状态:services/java/com/android/s

2012-04-09 19:43:16 8336 2

原创 Android 使用EMMC FS的问题

由于项目一直使用老旧的Android 2.3.4,然后硬件加入了EMMC所以system和userdata的image格式也相应的由yaffs2变成了EXT4。在调试过程中由此产生了两个问题:一,image的生成问题:更改build/core下的Makefile。以生成system.img.ext4为例,将原有的build-systemimage-target增

2012-03-07 18:09:49 6508

原创 android bionic缺失pthread_cancel的解决方法

在native code中使用多线程好处多多,但是Android的bionic并没有完全实现标准POSIX线程库的所有API,例如pthread_cancel()。但是google这样做肯定有原因,被cancel的thread不一定已经把自己拥有的资源释放掉,因此很可能带来内存泄露,锁没有释放等问题。这些问题在移动设备上更加突出。首先介绍一个指标的方法,使用signal替代cancel

2011-12-27 16:19:08 11336 4

原创 android input system(frameworks) analysis -- InputManager (2)

接上文对EventHub getEvent()的分析,InputReader::loopOnce()在getEvent()成功返回直接,就调用process(& rawEvent);开始分析报上来的rawEvent:void InputReader::process(const RawEvent* rawEvent) { switch (rawEvent->type) {

2011-12-15 11:28:57 2808 1

原创 DS-5 CE 初体验

在一台MSM7627带256RAM的手机上移植android 2.3.5,发现此平台的性能跑2.3.5只能说是刚刚好。后台运行2-3个程序的时候就已经卡顿严重。于是想办法对其进行性能分析和优化,老大介绍了ARM DS-5工具让熟悉,于是到arm主页找文档。ARM的说明文档见这里,最新版本是DS-5 version5.8 ,以下步骤是根据链接中的文档翻译过来,摘取测试过的部分列下来。由于没有

2011-12-14 19:02:29 4062 1

原创 Android Boot: After kernel stage

本来一直在分析WIFI service,后来一直往底层追溯,就跟踪到了Android的service manager等“大户”的启动,再往上追就到了init了。先大概记录一下启动的流程,以后有空了再补充某些步骤的细节。由于分析的是Kernel起来之后剩下的启动过程,所以从init进程开始:一,initInit是由kernel启动的用户级进程,它始终是第一个存在进程。init起来之后

2011-12-06 14:54:06 1602

原创 移植wireless tools (iwpriv, iwconfig, iwgetid, iwevents, iwspy, iwlist)到Android

最近在调试WIFI softap功能,发现netd源码中包含"iwpriv"相关的注释,这个工具应该会对WIFI调试非常有用,于是准备将其移植到Android上。首先到这里下载源码,然后解压,按照网上搜出来的方法,把目录里头Makefile的CC,AR等改成交叉编译所用的,但是发现make all的时候报缺少头文件错误。用-I将头文件引入之后在ld阶段又报缺少crt0.o。折腾了半天之

2011-11-29 18:58:14 8865 6

原创 android input system(frameworks) analysis -- InputManager (1)

对input系统在framework层的分析从一次触摸屏丢失上报事件开始:由于设备节点/dev/input/input0存在,而且getevent能响应点触摸屏的动作,所以把问题定位到了EventHub和InputManager这一层。InputManager的结构很简单,对外开放 virtual status_t start(); virtual status_

2011-11-15 17:47:07 3985 5

原创 Android: 3G/1G and 2G/2G kernels problem

在进行MOD Android ROM的时候有可能遇到的问题是:BT的厂家自带的kernel是带着CONFIG_VMSPLIT_2G=y编译的,这个时候如果Android上层按照3G的偏移来做prelink的话就会出问题,解决方法如下: 1, add the prelink-linux-arm-2G.map to build/core/ and change its name to pr

2011-11-08 21:30:00 2229

原创 android编译分析【一】

最近以CM7为基础移植android到某个机型,简单的说编译步骤如下:1,在device/zte/blade/目录下运行unzip-files.sh,这步的主要目的是将某些硬件相关的库直接复制到vendor目录(因为拿不到厂家的源码只能这样做了);2,在source目录运行. build/envsetup.sh;3,lunch,选取适当的编译目标;4,make -jx,开跑

2011-10-27 17:40:44 1229

Remote Service Demo

Remote Service Demo ,包括Service以及Client端。

2015-12-04

DrawerLayout Demo

android-support-v4 DrawerLayout Demo

2015-11-24

安卓状态机demo

把StateMachine从安卓源码中提取出来用于app开发

2014-10-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除