Android开发
Android开发
victory08
程序员最重要的素质就是冷静,还有就是从千头万绪中理出头绪!
展开
-
浅谈AudioRecord对多通道音频的支持
麦克风阵列是近几年来比较火的技术,顾名思义,就是音源输入由原来的单一麦克风变成多路麦克风。在实际的项目中需要在Android系统中通过AudioRecord接口获取4路麦克风录音数据。设备端是一个声明成UAC设备的多麦克风录音设备,具体参数是4channel,16K,16bit,但AudioRecord的接口关于通道的参数只有单声道和立体声,不支持多通道录音。这里做了一个变通,通过提高采样率来获取...原创 2018-02-22 13:42:48 · 7138 阅读 · 1 评论 -
APK签名的一些问题
1 签名文件(xx.keystore)的作用? 生成APK文件时必须要经过某个keystore文件的签名,签名的过程实际上是根据keystore文件中的信息生成校验信息和签名信息,以避免APK被篡改 2 如何生成签名文件? 使用jre\bin下的keytool工具,命令如下: keytool -genkey -alias keytest -keyalg RSA -validity 40000原创 2016-01-20 17:25:32 · 1941 阅读 · 0 评论 -
Matrix与图像变换
1 为什么使用Matrix类处理图像? 图像是有一定数量的点组成,每个像素点对应一个坐标(x,y),图像的基本变换放大,缩小,平移,旋转本质上就是对每个点的坐标做相应的运算得到新的点,也就是有(x,y)经过转换变为(x’,y’).例如平移运算是x’ = x + m,y’ = y + m.放大运算是x’ = s*x,y’ = s*y., 以上的运算都可以统一转换成矩阵的运算,由于平移运算是加法而不是原创 2015-12-27 21:58:16 · 643 阅读 · 0 评论 -
获取异常详细信息
public static String getExceptionAll(Exception ex) { StringBuilder builder = new StringBuilder(); StackTraceElement[] trace = ex.getStackTrace(); for (StackTraceElement s : trac原创 2015-11-17 10:52:34 · 748 阅读 · 0 评论 -
Android系统查看内存情况的命令
1 procrank root@rk312x:/ # procrank procrank PID Vss Rss Pss Uss cmdline 121 149692K 104328K 99047K 96416K /system/bin/mediaserver 6442 618748K 59456K 3557原创 2015-08-24 19:07:48 · 5583 阅读 · 0 评论 -
Android应用停用
1 什么是应用停用,为什么用的应用在设置里有这个选项,有的没有? 按照官方解释,应用停用是android3.1以后引入的一个特性,为了解决广播乱接收的问题。停用和停止不是一个概念,一个应用被停用后,应用内部一些广播监听会失效。因此,应该是只有声明了广播接收的应用在设置选项里才会有停用的按钮,但这一点没有去考证,只是猜测。 2 如何知道哪些应用被停用了? 两种方法,方法1:如果你的设备是root原创 2015-09-11 17:20:25 · 6687 阅读 · 0 评论 -
Android自定义布局通知栏
1 通知栏可以使用自定义布局,可以在自定义布局上添加按钮,跳转到指定的activity 2 通知栏的生命周期和应用的生命周期无关,应用退出后,通知栏可以继续存在,但应用卸载后,通知栏会消失 显示通知栏:private void createNotification() { NotificationCompat.Builder builder = new NotificationC原创 2015-09-14 11:43:12 · 4170 阅读 · 0 评论 -
android中利用Java反射机制获取系统相机对象
if (Build.VERSION.SDK_INT > 10) { try { Class clsCamera = Camera.class; Method staticMethodOpen = clsCamera.getMethod("open",原创 2012-10-09 09:11:15 · 1294 阅读 · 0 评论 -
Eclipse TODO功能
在不确定是否正确或代码需要进一步优化的地方,用//TODO t原创 2014-10-22 17:20:01 · 648 阅读 · 0 评论 -
使用WindowManager.LayoutParams的x和y设置窗体位置
窗体的大小和位置通过WindowManager.LayoutParams来设置,在通过x和y值来设置窗体位置时,需要注意gravity属性,如果gravity没有设置或者是center之类的,那么设置的x和y值就不会起作用,具体的说明见 X position for this window. With the default gravity it is ignored. When using LE原创 2016-01-04 17:00:48 · 15729 阅读 · 1 评论 -
Android设备抓包命令及分析
1 Android设备抓包命令 adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap 2 WireShark过滤http中get方式的url请求 ip.src == 10.0.0.34 && http.request.method原创 2016-01-07 10:36:44 · 510 阅读 · 0 评论 -
getAction、getActionMask、getActionIndex区别
Android用一个32位的整型值表示一次TouchEvent事件,低8位表示touch事件的具体动作,比如按下,抬起,滑动,还有多点触控时的按下,抬起,这个和单点是区分开的,下面看具体的方法: 1 getAction:触摸动作的原始32位信息,包括事件的动作,触控点信息 2 getActionMask:触摸的动作,按下,抬起,滑动,多点按下,多点抬起 3 getActionIndex:触控点原创 2015-12-26 11:13:18 · 17462 阅读 · 3 评论 -
Android平台遥控器按键映射流程
遥控器发一个扫描码,扫描码会经过kl文件的映射,每个设备可以有自己对应的kl文件,如果没有对应的kl文件则使用系统默认的Generic.kl文件 1 查看输入设备和kl文件名的对应关系 如上图所示的设备对应的kl文件名为:Vendor_0001_Product_0001.kl 经过kl文件的映射扫描码被映射到键值名 如上图,按遥控器右键,通过getevent观察遥控器发送的键值为00原创 2016-09-08 16:33:12 · 9670 阅读 · 0 评论 -
解决动态调用其他APK中的类so加载失败问题
在一个APK中去加载并调用另一个已安装的APK中类,为了方便描述,调用的APK成为主A,被调用的的B,B中的类需要加载so,B独立运行时so能加载成功,但由A加载调用B时会提示so加载失败,进一步分析是在loadLibrary的时候so查找路径为空,而B自己独立运行时查找路径会包括/data/data/B包名/lib,由此为突破口,发现使用PathLoader加载B中的类时可以传入libraryP原创 2016-08-26 15:51:02 · 2685 阅读 · 1 评论 -
Android设备抓包方法
1 在设备内抓包,例如使用tcpdump命令 2 通过代理的方式抓包,如果设备上没有tcpdump命令,可以让设备连到电脑的共享网络上,然后在电脑上抓包 3 通过设置交换机端口转发抓包,Android设备如果和电脑在同一个网络且在同一个交换机下面,则可以通过在交换机上设置端口转发来抓包,基本原理就是分别确定Android设备和电脑连接的交换机端口,然后设置经由Android设备对应端口的包全部转原创 2016-08-18 09:27:45 · 782 阅读 · 0 评论 -
使用tcpdump在android设备上抓包
1 Android设备抓包命令 adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap2 WireShark过滤包命令: ip.src == 10.0.0.34 && http.request.method原创 2016-03-14 10:27:47 · 1063 阅读 · 0 评论 -
Activity四种启动模式解析
每个安卓进程都会对应至少一个任务栈,任务栈是用来存放Activity的,Activity的切换对应的就是任务栈的进栈和出栈操作,安卓的Activity可以配置成4种启动模式,不同的模式有不同的进栈和出栈处理,能够实现不同的切换效果. 1 Standard,如果Activity没有特别声明启动方式,默认就是这种方式 这个模式每启动一次Activity都会生成一个新的Activity实例并被压入栈中原创 2016-06-21 16:08:02 · 384 阅读 · 0 评论 -
Ubuntu下配置make3.8.1
Ubunut16默认的make环境是4.1的,但编译android源码需要make3.8.1或3.8.2,下面介绍下配置并使用make3.8.1的方法1 下载make-3.81.tar.bz2 下载地址:http://ftp.gnu.org/gnu/make/2 解压 tar -xvf make-3.81.tar.bz23 编译 ./configure make4 配置 export PA原创 2016-06-06 10:59:45 · 9710 阅读 · 0 评论 -
修改Android系统目录的读写权限命令
1 mount -o remount,rw /system 有的系统必须要remount/system这个目录才能成功原创 2016-03-14 10:17:36 · 3978 阅读 · 0 评论 -
自定义可滑动导航栏
package my.navilayout;import android.content.Context;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawabl原创 2016-03-10 16:44:43 · 726 阅读 · 0 评论 -
从日志中筛选应用崩溃的信息
有时候应用崩溃后,需要通过抓取的日志来分析哪里出错了,原创 2014-11-10 18:57:31 · 717 阅读 · 0 评论 -
oauth认证介绍 android在调用第三方开放平台时经常要用到
http://www.ibm.com/developerworks/cn/java/j-lo-oauth/index.html转载 2013-03-22 17:14:06 · 640 阅读 · 0 评论 -
让Android应用程序支持安装到SD卡(APP2SD)
Android系统在2.1版本之前,应用程序是只能安装到机身内存(ROM)中,这一特性从某种角度上讲,阻止了Android的发展,因为ROM的空间是有限的,所以这一特性限制了应用程序的体积,也就限制了应用程序的功能。 自从Android 2.2版本开始,Android系统引入了一个全新的功能——APP2SD,这个功能让Android系统允许将应用程序安装到SD卡上面,一方面节约出更多的ROM转载 2013-02-21 13:58:00 · 973 阅读 · 0 评论 -
android进程间通信学习一
由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content P转载 2013-03-20 14:18:05 · 20141 阅读 · 3 评论 -
Handler、HandlerThread、Message之间的关系理解
1 一个Handler对应一个Thread的消息队列,也就是说Handler是用来处理线程中发出的消息的,线程原本可以在内部直接处理一些事情,但android采用这种异步的处理模式,Thread通过消息的方式发送到Handler中去处理相应的事件.Activity默认绑定一个Handler也即是UI主线程默认有自己的handler,handler中对事件的处理仍然是处于主线程中的.2.An原创 2013-03-20 16:08:27 · 1856 阅读 · 0 评论 -
Shell下杀android进程方法
重启Android进程是经常要做的操作,做为开发人员,习惯在eclipse里直接重启进程,但有时候现场定位问题的时候可能是随便找已给笔记本连接到设备上,很难保证还有eclipse这种集成开发环境。这里记录下在shell下通过命令行杀android进程的方法:1 找到目标进程ps | grep "xxx.xxx" 2 根据进程pid号杀死进程kill -s 9 pid原创 2014-11-27 10:14:50 · 1763 阅读 · 0 评论 -
android中的Handler和Callback机制
http://alex-yang-xiansoftware-com.iteye.com/blog/850865转载 2013-02-20 14:55:00 · 1019 阅读 · 0 评论 -
悬浮窗效果与System.exit(0)
今天在做一个悬浮窗效果的是否,原创 2014-10-07 12:09:16 · 627 阅读 · 0 评论 -
自定义进度条
自定义进度条的实现,网上有大虾已经总结的很好了,这里整合了两篇,放在一起,用于记录1 基础篇原文地址:http://blog.csdn.net/feng88724/article/details/7409032/一、通过动画实现定义res/anim/loading.xml如下:[html] view plaincopyprint?转载 2015-01-15 22:51:12 · 1012 阅读 · 0 评论 -
WindowManager没有获取到焦点
今天遇到一个问题,WindowManager同时add两个view,后出来的view上面的按钮虽然通过requestFocus方法拿到了焦点,但实际焦点还在之前出来的view上,对比了两个view的WindowManager.LayoutParams参数设置,发现前一个view的flag参数为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,后一个view的原创 2015-02-02 20:40:28 · 4325 阅读 · 0 评论 -
搜索android RAM ROM SD区别时找到一篇分析不错的文章
最近入手一部Android手机,使用后发现系统总会在后台自动启动一些程序,而这些程序都是平时不怎么用的。做过实验,刚开机时系统只有5个程序启动,RAM剩余288M,待机半个小时候有10个程序被启动,RAM剩余176M,再过个把小时后有近18个程序被加载了,RAM剩余只有106M。整个过程中手机完全处于待机状态,未接打电话、收发短信、运行程序(除任务管理器用以监控程序和RAM)。虽然说106M之后并转载 2013-02-21 13:52:10 · 2189 阅读 · 0 评论 -
ActivityGroup对返回键的监听
在做应用开发的时候,我们经常用到ActivityGroup,它对我们管理Activity来说是非常方便的但是,带来的不幸就是对OnkeyDown()事件的监听,你永远不知道到底是ActivityGroup收到这个方法还是现在显示的Activity接受到这个方法下面,我提供一种把OnkeyDown()事件全权交给当前显示的子Activity来处理,其实很简单,不会像网上所说那样,需要转载 2013-01-09 15:35:44 · 2537 阅读 · 3 评论 -
Android App插件功能实现调研
1 App插件要实现的目标A. 不能单独运行,必须在主框架中加载运行,不以安装包的形式存在,不在桌面上显示安装图标.B.可以被主框架搜索,加载,显示并调用C.可以在主框架中进行管理,安装及卸载2 App插件实现分析首先分析下插件机制使用比较成熟的浏览器,android平台下浏览器插件也是以apk的形式存在的,插件apk没有可直接运行的入口并注册特定的服务以被浏览器搜索并加载,浏原创 2012-11-30 16:38:13 · 2356 阅读 · 0 评论 -
AndroidManifest.xml字段解析
AndroidManifest.xml采用xml文件格式描述,原创 2014-10-29 20:43:43 · 5628 阅读 · 0 评论 -
NDK入门
http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html转载 2012-10-31 08:45:58 · 313 阅读 · 0 评论 -
编译android自带的ndk示例
1 下载好android-ndk-r4开发包,并解压目录.2 配置ndk-build环境变量sudo vim eitc/bash.bashrc在最后加入:NDK=/home/yanvictory/android-ndk-r4/export PATH=$NDK:$PATH保存退出执行:source eitc/bash.bashrc再在终端执行ndk-build原创 2012-11-02 16:48:16 · 659 阅读 · 0 评论 -
Android中跟Touch事件有关的事件
Android中跟Touch事件有关的事件有三个: public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。 public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。转载 2013-01-22 10:32:54 · 763 阅读 · 0 评论 -
Android中APK安装过程及原理解析
应用安装是智能机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作。APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。Android应用安装有如下四种方式1.系统应用安装――开机时完成,没有安装界面转载 2013-02-21 13:57:17 · 459 阅读 · 0 评论 -
Android Parcel序列化实践
public static class APPInfo implements Parcelable{ private String mAppName; private Drawable mDrawable; private String mPkgName; private String mStorePkg; priv原创 2014-11-26 23:25:20 · 894 阅读 · 0 评论 -
Android listview异步加载图片
listview异步加载图片网上有很多这方面的资料,对网上的一些解决方案做了整合,最终写了一个"线程池"+"LruCache缓存"+"tag防止错位"的demo,主要代码如下:MainActivity.javapackage com.syncloadbmp;import java.util.ArrayList;import android.app.Activity;import原创 2014-12-21 15:57:19 · 969 阅读 · 0 评论