一般情况下,我们在 android 原始 framework 层的 C/C++ 代码中添加 log 信息非常方便:

只需要添加如下头文件 :

#define LOG_TAG "MediaRecorder"
#include

并且在 函数中添加如下 log 输出信息(如蓝色字体显示):

status_t MediaRecorder::setCamera(const sp& camera)
{
    LOGV("setCamera(%p)", camera.get());
    if(mMediaRecorder == NULL) {
        LOGE("media recorder is not initialized yet");
        return INVALID_OPERATION;
    }
    if (!(mCurrentState & MEDIA_RECORDER_IDLE)) {
        LOGE("setCamera called in an invalid state(%d)", mCurrentState);
        return INVALID_OPERATION;
    }


    status_t ret = mMediaRecorder->setCamera(camera);
    if (OK != ret) {
        LOGV("setCamera failed: %d", ret);
        mCurrentState = MEDIA_RECORDER_ERROR;
        return ret;
    }
    return ret;
}


如果我们要将第三方的 C/C++ 文件移植到 framework 代码中怎么办呢,用上述方法就不一定凑效了。

我们需要在该 C/C++ 中添加

#include

并且宏定义一下原始的 log 输出函数 __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__); 

或者 __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__);

这样就不需要在打 log 的时候敲入那么多字符了

宏定义如下:

#define LOG_TAG "MediaRecorder"

#define LOG(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__)


使用实例:

LOG("InitFbImage format = %d, width = %d, height = %d", format, width, height);

当然,你也可以只打印点字符信息

LOG("InitFbImage");


Log 信息查看:

所有的 log 信息都可以通过控制台输出。只要过滤 LOG_TAG 或者其它某关键字即可查看

adb logcat -s MediaRecorder  

或 adb logcat | find "log" 

adb logcat | grep "log"

但内核 log 例外,内核的 log 存放的目录不同

adb shell cat proc/kmsg


刚刚看到了一篇文章比较系统的讲解了 android log 系统的来龙去脉:http://blog.csdn.net/luoshengyang/article/details/6581828#comments

推荐!

更多相关文章

  1. Android应用崩溃后怎么查看报错信息
  2. Android下使用dlopen函数动态调用.so链接库
  3. 【转】关于Android体系架构和开发库的部分信息
  4. 简单的使用腾讯X5内核浏览器替代Android原生的WebView
  5. 【转】Android内核开发:如何统计系统的启动时间
  6. Android 8.0 学习(4)---Android通用内核
  7. Unity调用高德地图API,获取定位信息(Android)
  8. Android获取系统的硬件信息、系统版本以及如何检测ROM类型

随机推荐

  1. (lintcode)第22题 平面列表
  2. Mybatis创建SqlSession的源码分析
  3. (lintcode)第15题 全排列(没有重复数字)
  4. (lintcode)第17题 子集
  5. (lintcode)第9题Fizz Buee问题
  6. (lintcode)第24题 LFU缓存
  7. (lintcode)第11题二叉查找树中搜索区间
  8. (lintcode)第28题 搜索二维矩阵
  9. (lintcode)第12题带最小值操作的栈
  10. (lintcode)第29题交叉字符串