• 如何在android 系统 C/C++ 层中添加 log 信息



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

    只需要添加如下头文件 :

    #define LOG_TAG "MediaRecorder"
    #include <utils/Log.h>

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

    status_t MediaRecorder::setCamera(const sp<ICamera>& 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 <android/log.h>

    并且宏定义一下原始的 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

    推荐!

    http://www.360doc.com/content/11/0519/15/474846_117915969.shtml




  • 相关阅读:
    结婚很难
    ***归心似箭***
    听首你家健和我家菲都唱过的歌吧
    努力幸福
    080509
    快速切题 poj1573
    POJ 2586 Y2K Accounting Bug 贪心 难度:2
    快速切题 poj2632
    POJ 3579 median 二分搜索,中位数 难度:3
    HDU 4802 && HDU 4803 贪心,高精 && HDU 4804 轮廓线dp && HDU 4805 计算几何 && HDU 4811 (13南京区域赛现场赛 题目重演A,B,C,D,J)
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11744619.html
Copyright © 2020-2023  润新知