个人对LockScreen的流程分析

首先,关于power key的代码处理在frameworks\base\policy  中的PhoneWindowManager.java文件中

还有一些service以及cpp文件的处理,在android\frameworks\base\services 下的jni以及java文件中

关于LockScreen的处理在android\vendor\qcom\proprietary\qrdplus\LockScreen中


JNI中的cpp文件如何打log

首先,关于cpp文件log的输出,打log,需要引入头文件,无非是两种

#include <utils/Log.h>#include <cutils/Log.h>

两个文件不同的是,前者是android\system\core\include\utils下的Log.h文件

后者是android\system\core\include\cutils下的Log.h文件。

但是这两者又有什么区别呢。

打开首先打开cutils/Log.h看一下:只有一句话:  #include <log/log.h>

说明,即使是在cutils/Log.h,也只是引用了log/log.h

然后打开utils/Log.h,发现头文件出引用了

说明,最终使用的还是log\log.h文件的内容,这里面的内容就有很多了,就不一一赘述了。

按照常规方法,我在cpp文件中加入了log,内容为:LOGI("niejianjian_jni_log!!!");

但是,编译的时候,却报错,内容为:“LOGI” was not delcared in this scope,提示没有定义,这个时候,就要添加一些内容,才可以打印出log信息。

1.导入log头文件

例如:#include <utils/Log.h>

  #include <android/Log.h>

2.修改Android.mk文件

加上LOCAL_LDLIBS :=-llog

注意,这一句必须放在include $(CLEAR_VARS)后面,否则不生效

3.定义LOG函数

#define TAG "myDemo-jni" // 这个是自定义的LOG的标识   

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型   

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型   

#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型   

#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型   

#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型  

定义完了之后,他们分别相当于android的java代码中的Log.d(),Log.i()等方法。

 

下面举个例子。

我在cpp文件中先加入了log头文件,然后声明了一下内容:


然后我在代码中使用LOGI。内容如下:

LOGI("niejianjian_jni_log!!!");

最后,在DDMSLogcat中查看打印的log结果如下:


到此,打印cpp打印log的方法就结束了。

参考博客:http://www.2cto.com/kf/201307/227148.html




JNI的科普

1.Java native 关键字 

native是与C++联合开发的时候用的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值