![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 55
holaJohnny
这个作者很懒,什么都没留下…
展开
-
ubuntu利用update-alternatives配置java
利用Android Studio开发,经常会碰到JDK版本的切换问题,安装好新版本的jdk之后,需要先配置到可选项。yinlijun@sj:~$ sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_101/bin/java 100update-alternatives: 警告: /etc/alternatives/原创 2016-11-02 14:55:16 · 3209 阅读 · 0 评论 -
Android 2.2 滑盖(lid)的影响
前段时间项目之中遇到了按键灯不亮的问题,稍微看了一下framework的代码,发现是因为滑盖的开关状态对其有影响。在PhoneWindowManager中有定义: boolean mLidOpen;这里没有初始化,所以为false,而且硬件确实没有装滑盖,所以PhoneWindowManager对就不会对mLidOpen进行更新。 void readLidState(原创 2012-04-04 17:48:21 · 3890 阅读 · 1 评论 -
批量修改文件名
# !/bin/shcd $1find . -name "*:*"|while read name;do na=$(echo $name | tr ':' '_') mv "$name" $nadone原创 2012-02-29 11:05:56 · 842 阅读 · 0 评论 -
Android通过有线USB上网卡上网
USB上网卡分无线3G和有线的,无线3G上网卡我的同事已经实现,我最近实现的是有线的。即通过RJ45转USB连接到MID,驱动会注册好ethX的网络设备,我要实现的就是操作该网络设备就可以了。 ConnectivityService是管理连接的服务,它管理多个网络类型Tracker,如WifiStateTracker,MobileDataStateTracker,类似的,我需要实现UsbN原创 2011-06-22 11:07:00 · 11668 阅读 · 4 评论 -
Android.mk的LOCAL_MODULE_TAGS标志
Android.mk中的下面这个标识可以决定模块是否编译, LOCAL_MODULE_TAGS := engdev/device/samsung/crespo/vendorsetup.shadd_lunch_combo full_crespo-engAndroid.mk中的“eng”如果与device下vendorsetup.sh中的标识“eng”一样,则编译该模块。原创 2011-12-29 20:51:39 · 2028 阅读 · 0 评论 -
编译framework找不到资源文件错误
在framework/core/res/res下新增资源文件,再去编译framework/service.jar,有可能提示找不到刚添加的资源文件,核对文件名,文件格式都正确外,可能是编译顺序错了。正确的编译顺序应该是:framework-res.apk——>framework.jar——>services.jar其中framework.jar的编译必不可少。原创 2012-01-13 09:38:41 · 1937 阅读 · 0 评论 -
自动重复拨打工具
这两天为买票伤透了脑筋,铁道部的网站实在不给力,先不说性能怎么样,单就用户界面就够令人蛋疼了。各种莫名其妙的错误,各种重复输入密码...于是自己改了一下Phone的代码,替换原来的apk,让它自动重拨。市场上也有一些所谓疯狂拨号的apk,但是限于api,并不能对电话进行精确的控制,一个典型的例子就是,拨打95105105之后,如果不能接通,对方不会自动挂断,而是一直在提示“对不起,..bl原创 2012-01-09 15:26:55 · 5267 阅读 · 2 评论 -
JNI的小总结
code locationdalvik/libnativehelper/include/nativehelper/jni.hframeworks/base/core/jniandroid的JNI的调用过程中有个很重要的地方就是参数映射。体现在一个叫JNINativeMethod的结构体里面JNINativeMethod在jni中有定义。typedef str原创 2010-12-09 14:00:00 · 2794 阅读 · 0 评论 -
Android开发工具——ADB(Android Debug Bridge) <四>Device端
这篇博客梳理Device端adbd是如何运作的,最好有前面博客的预习,1、Android开发工具——ADB(Android Debug Bridge) 概览,2、Android开发工具——ADB(Android Debug Bridge) HOST端,3、Android开发工具——ADB(Android Debug Bridge) DalvikVM之jdwp线程。 在adbd原创 2011-12-02 15:43:35 · 4537 阅读 · 2 评论 -
linux目录中递归删除同名文件夹
# 在当前文件夹及子文件夹下查找.svn文件夹并递归删除 find . -name '.svn' -type d | xargs rm -rf转自:http://www.crazycode.org/archives/134转载 2011-11-10 08:49:41 · 2244 阅读 · 0 评论 -
android 4.0的一种拷贝文件方式
举例说明:1、在device/xxx/目录下添加system/lib/libxxx.so2、在device/xxx/目录下添加Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)file := $(TARGET_OUT)/lib/libxxx.so$(file) : $(LOCAL_PATH)/system/原创 2012-04-14 18:50:45 · 1605 阅读 · 0 评论 -
回到原点——由调试gprs想到的
我一直认为自己非常愚钝,在调试代码的时候,一次一次的印证了这一点。 客户拿一个机器给我调试,语音业务电话很快就打通了,但是数据业务一直起不来。跟所有问题一样,碰到问题的时候,往往觉得无处下手,看起来满地都是线索,就是找不到头绪在哪里。这是,冷静下来思考是最重要的,所有的业务都有个流程,数据也是这样,首先要做的定位,把业务流程中所有的已经验证的问题切割,这样最后只剩下有迁移的流程,原创 2012-04-14 14:05:02 · 2786 阅读 · 1 评论 -
git配置user.name和user.email
github在统计提交的时候,会判断邮箱是否跟github的登陆邮箱匹配,不匹配则不计算活跃度,即不生成小绿块。获取配置yinlijun@yinlijun:~/personal_github/johnny-blog$ git config user.emailaaa@aaa.comyinlijun@yinlijun:~/personal_github/johnny-blog$ git confi原创 2016-11-09 11:20:28 · 22431 阅读 · 0 评论 -
.gitignore无效,不能过滤某些文件
利用.gitignore过滤文件,如编译过程中的中间文件,等等,这些文件不需要被追踪管理。现象:在.gitignore添加file1文件,以过滤该文件,但是通过Git status查看仍显示file1文件的状态。原因:在git库中已存在了这个文件,之前push提交过该文件。.gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了解决:需要在原创 2016-11-09 11:01:51 · 401 阅读 · 0 评论 -
android studio编译错误: *** 目标模式不含有“%”。 停止。
Android Studio NDK编译出现如下错误: * target pattern contains no `%’. Stop 中文: * 目标模式不含有“%”。 停止。 可能是obj目录的问题,需要删掉。 在工程目录下find所有的obj目录find . -name obj原创 2016-11-09 10:50:32 · 4490 阅读 · 0 评论 -
Android数据库代码备忘
ContentProvider的实现及数据库共享原理,强烈推介老罗的四篇情景分析文章:Android应用程序组件Content Provider简要介绍和学习计划Android应用程序组件Content Provider应用实例Android应用程序组件Content Provider的启动过程源代码分析Android应用程序组件Content Provider在应用程原创 2013-09-18 11:20:09 · 1807 阅读 · 0 评论 -
内核中line discipline的注册流程以及BT hciattach进程的启动
以hci_ldisc.c为例,梳理内核中线路规程的注册流程我们的N_HCI的注册过程如下:bluetooth/hci_ldisc.c module_init(hci_uart_init); tty_register_ldisc(N_HCI, &hci_uart_ldisc) //hci_uart_ldisc包含N_HCI线路规程的一系列回调原创 2013-07-29 01:28:01 · 5790 阅读 · 4 评论 -
Android Telephony系统 之 DataConnectionTracker与MobileDataStateTracker之间的通信
我们知道DataConnectionTracker是跑在com.android.phone进程中,而MobileDataStateTracker是跑在system_server进程中,那么两者是如何通信的在DataConnectionTracker的派生类GsmDataConnectionTracker的构造函数的最后一行:public GsmDataConnectionTracker(P原创 2013-07-28 22:11:54 · 5848 阅读 · 1 评论 -
Android 4.2 BT系统之蓝牙关闭过程全跟踪
代码位置: frameworks/base/services/java/com/android/server/BluetoothManagerService.java 这部分代码,生成libandroid_runtime.so完成功能,中转BluetoothAdapter和Bluetooth.apk,所有来自其他应用的请求,都通过IBluetooth接口,转发到Bl原创 2013-08-03 00:34:36 · 20789 阅读 · 12 评论 -
带模组MID的3G DONGLE实现
去年这个时候,我在公司的MID上实现有线上网卡,写了一篇博客 Android通过有线USB上网卡上网,今年同一时间,我在带模块的MID基础上实现了3G Dongle,区别与无模组的MID,在带模块MID上实现3g dongle是截然不同的实现。在带模组的MID上实现3g dongle是比较有市场的,尤其是2G模块,在网速极不给力的时候,对3g dongle的支持显得非常有必要,很多客户原创 2012-07-16 22:03:44 · 1653 阅读 · 0 评论 -
Android 编译找不到资源文件的几种可能的原因
1、id不匹配2、xml未编译3、编译顺序有问题4、未import正确的资源包在frameworks/base/core/res/res下编译生成的资源文件保存在out/target/common/R/com/android/internal/R.java所以先在R.java内看有没有你的id,然后检查源代码有没有:import com.android.internal原创 2012-07-04 22:34:49 · 3603 阅读 · 0 评论 -
对公司的思考
最近一直在搞基于android系统的对讲机,个人认为,电话的应用和telephony框架是android最稳定的部分之一,但是对讲机的模块跟普通模块有本质的不同,在android上做对讲机,无疑要最原本稳定的电话框架和应用做大量修改,但是与之矛盾的是,公司只能投入很少量的人力去做这个项目,应用3人,驱动1人,我们几个人平时也有项目在参与,所以花在这上面的时间不多。经过半年的折腾,终于在昨天能有个d原创 2011-11-09 10:28:35 · 1433 阅读 · 2 评论 -
Android开发工具——ADB(Android Debug Bridge) <三>DalvikVM之jdwp线程
jdwp(java debug wire protocol)是dalvik VM的一个线程,可以建立在adb或者tcp基础上,与DDMS或debugger进行通信。代码位置dalvik/vm/jdwpframeworks/base/core/jnijava虚拟机初始化后,或者每次“zygote fork”出一个新进程时,会启动jdwp线程。关于虚拟机的初始化参考我的博客ht原创 2011-11-29 13:50:38 · 8417 阅读 · 2 评论 -
Android开发工具——ADB(Android Debug Bridge) <二>HOST端
我分析代码的喜欢从main函数开始,因为还不知道代码结构的情况下,这是最直接的方法。所以先看adb.c的main函数int main(int argc, char **argv){ adb_trace_init();#if ADB_HOST adb_sysdeps_init(); return adb_commandline(argc - 1, argv +原创 2011-11-26 15:55:52 · 5257 阅读 · 1 评论 -
android 2.2数据连接过程
<br />整个数据连接过程主要靠DataConnection及其对应cdma和gsm的子类<br />数据连接包含几种状态,构造函数里面必须添加这几种状态,并且指定一个初始状态,如下代码<br />293 addState(mDefaultState); <br />294 addState(mInactiveState, mDefaultState); <br />295原创 2010-11-19 11:12:00 · 5045 阅读 · 1 评论 -
android中Connection.hangup()和Call.hangup()
<br /><br />当我看到PhoneUtil的这么多hangup()的时候,头都有点晕了,还是来详细捋一遍吧。<br />-------GsmConnectio.java---------<br />public void hangup() throws CallStateException<br />{<br /> if (!disconnected) {<br /> owner.hangup(this); //owner是GsmCallTrack原创 2010-08-18 15:40:00 · 3955 阅读 · 0 评论 -
android Phone中的消息处理过程
在android应用里面要取得并处理一条消息,是比较漫长和复杂的。首先要取得消息,必须先注册该消息,并且提供响应的handler。比如一条新来电的消息,PHONE_NEW_RINGING_CONNECTIO,这条消息是由CallNotifier定义并注册的,当有新来电时候,CallNotifier.handleMessage()就会得到并判断该消息类型,然后调用onNewRingingConnection((AsyncResult) msg.obj)进行响应的处理。问题来了,CallNotifier原创 2010-08-18 14:36:00 · 2618 阅读 · 2 评论 -
DTMFTwelveDailerView.java && DTMFTwelveDailer.java
<br /><br />DTMFTewlveDailerView.java---->dispachKeyEvent(KeyEvent event)<br /> 1, 在那个DTMF起来的情况下,是只能响应两个按键的,CALL键和BACK键,前者拨打电话,后者退出,都返回到InCallScreen界面<br /> 所以DTMFTwelveDialerView.dispachKeyEvent(KeyEvent event) 的返回语句是return event.isDown() ? mD原创 2010-08-11 16:49:00 · 1143 阅读 · 0 评论 -
InCallScreen.java/enableTouchLock(boolen enable)方法分析
<br />该函数是设置是否需要在通话是锁屏(双击屏幕解锁)的, 因为在通话时脸颊会贴近电容屏,导致误操作<br />如果参数enable为真,<br />1,如果不在通话,直接返回<br />2,扬声器工作,返回,因为扬声器工作的话脸颊不用贴近<br />3,如果锁没有构造,则构造一个锁<br />4,消失菜单<br />5,将锁淡入<br />如果参数为假,且锁不为null,使锁消失,函数源代码如下<br />private void enableTouchLock(boolean enable) {<原创 2010-08-10 16:34:00 · 2271 阅读 · 0 评论 -
andoird拨号流程简单解析
<br />android拨号分两种,一种经过拨号器,输入号码,然后按CALL键拨打出去,还有一种经过联系人或者通话记录拨打出去。<br /> <br />第一种方式:TwelveKeyDialer.java中的placeCall()<br />void placeCall() {<br /> final String number = mDigits.getText().toString();<br /> if (number == null || !TextUtils原创 2010-08-09 17:55:00 · 5388 阅读 · 0 评论 -
android CallCard.java/updateState(Phone phone)分析
CallCard.java----->void updateState(Phone phone)----->根据当点电话的状态选择执行下列更新函数,1,updateRingCall(phone)/ 2,updateForegroundCall(phone)/ 3, updateNoCallphone() 1, updateRingCall(phone)----->a, displayMainCallStatus(phone, ringingCall) && b, display原创 2010-08-11 14:17:00 · 3949 阅读 · 5 评论 -
InCallScreen.java/updateScreen()分析
<br />函数功能是在通话状态改变时候,更新屏幕的<br />一、首先判定当前是否可以出现通话菜单<br />1,如果电话是空闲状态,不可以出现菜单<br />2,如果有来电<br /> 2.1 如果当前正在通话而且没有等待的电话,可以弹出通话菜单<br /> 2.2 否则,不能弹出菜单<br />二、如果是会议模式,更新会议面板<br />三、根据当前通话状态,更新CallCard,就是屏幕中间显示头像那一块。<br />四、是否显示DTMF面板(通话过程中的那个拨号面板,如查话费时候,原创 2010-08-10 17:33:00 · 3737 阅读 · 0 评论 -
android电话接听过程简单解析
一个新来电是由CallNotifier监听到的,CallNotifier类继承与Handler,在CallNotifier.java里面,代表新来点的Message是PHONE_NEW_RINGING_CONNECTION。mPhone.registerForNewRingingConnection(this, PHONE_NEW_RINGING_CONNECTION, null);当然,得注册这个信号。有新来电时,CallNotifier收到这个新号,交由onNewRingingConnection((A原创 2010-08-07 17:49:00 · 8845 阅读 · 3 评论 -
android froyo framework内RIL.java类分析
<br />这个类用来与ril层进行通信的<br />比如我要接听一个电话,通过层层调用到RIL.java里面的方法,mCT.acceptCall (Message result)<br /> 929 public void<br /> 930 acceptCall (Message result) {<br /> 931 RILRequest rr<br /> 932 = RILRequest.obtain(RIL_REQUEST原创 2010-11-18 20:07:00 · 3038 阅读 · 4 评论 -
模块编译时出现not in prelink map错误
模块编译动态库的时候,会出现如下错误:build/tools/apriori/prelinkmap.c(168): library 'libzte206-wcdma-ril.so' not in prelink map只需要在Android.mk文件内加上LOCAL_PRELIN原创 2011-07-29 14:41:39 · 3597 阅读 · 1 评论 -
android启动过程
从内核之上,我们首先应该从文件系统的init开始,因为 init 是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/, /bin/ 等目录下查找默认的init,如果没有找到那么就报告出错。init.c位置:system/core/init/init.c在init.c的main函数里面完成以下步骤:1、创原创 2010-12-09 16:42:00 · 2279 阅读 · 0 评论 -
Android开发工具——ADB(Android Debug Bridge) <一>概览
Android Debug Bridge (adb) 是一个android开发人员必会的多功能的调试工具,确实它的名字一样,它在开发者和目标机器之间,架起了一座bridge。 adb的用法很简单,只要看完SDK文档关于ADB的部分,(android-sdk-linux_86/docs/guide/developing/tools/adb.html),再稍加练习,基本上就满上就原创 2011-11-26 11:30:47 · 7510 阅读 · 2 评论 -
Android开发工具名称和代码目录
相关路径:aapt, aidl,frameworks/base/toolsadbsystem/coremonkeydevelopment/cmds/monkeysqlite3external/sqlite/distddmssdk/ddms原创 2011-11-24 17:11:10 · 110 阅读 · 0 评论 -
Android pppd_gprs脚本启动过程
android的gprs的上网过程:1、在ril层中打开模块对应的数据业务设备,比如/dev/ttyUSB32、往数据设备发送AT+CGDCONT命令指定对应apn,发送ATDT*98*1#等拨号指令3、上述AT指令返回OK之后,就可以启动pppd_gprs脚本了,启动之前,先设置好apn的属性,例如user,pwd,device等 property_set("net原创 2011-11-24 11:04:32 · 8108 阅读 · 2 评论 -
Android的属性Property系统
一直想研究一下android的属性系统,刚好最近一个项目告一段落,可以开始研究一下相关代码。按照我的理解,Android属性分为两个部分1、一个部分是系统属性,一般与虚拟机相关的一些属性,代码位置dalvik/libcore/luni-kernel/src/main/java/java/lang/System.javadalvik/libcore/luni/src/main原创 2011-11-17 17:27:08 · 10419 阅读 · 0 评论