如何在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

推荐!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Android Studio 中使用基于 C++ 的 OpenCV,需要进行以下配置步骤: 1. 下载 OpenCV for Android 并解压缩。可以从 OpenCV 官网下载最新版本。 2. 安装 Android NDK。可以从 Android Studio 的 SDK Manager 中下载并安装。 3. 在 Android Studio 中创建一个新项目并打开 build.gradle 文件。 4. 在 build.gradle 文件的 android 节点中添加以下代码: ```gradle externalNativeBuild { cmake { cppFlags "" abiFilters "" } } ``` 5. 在 build.gradle 文件的 defaultConfig 节点中添加以下代码: ```gradle externalNativeBuild { cmake { path "CMakeLists.txt" } } ``` 6. 在项目目录下创建一个 CMakeLists.txt 文件,并添加以下代码: ```cmake cmake_minimum_required(VERSION 3.4.1) add_library( native-lib SHARED native-lib.cpp ) find_library( log-lib log ) target_link_libraries( native-lib ${log-lib} ) add_library( opencv SHARED IMPORTED ) set_target_properties( opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../sdk/native/libs/${ANDROID_ABI}/libopencv_java3.so ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../sdk/native/jni/include ) target_link_libraries( native-lib opencv ) ``` 7. 在 src/main 目录下创建一个 cpp 目录,并在其中添加一个 native-lib.cpp 文件。在该文件中添加以下代码: ```c++ #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); } ``` 8. 在 MainActivity.java 文件中添加以下代码: ```java static { System.loadLibrary("native-lib"); System.loadLibrary("opencv"); } public native String stringFromJNI(); ``` 9. 构建并运行应用程序,如果一切配置正确,应该能够在应用程序中看到 "Hello from C++" 的输出。 以上是在 Android Studio 中配置基于 C++ 的 OpenCV 的步骤。需要注意的是,这只是一个简单的例子,实际使用中还需要进行更多的配置和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值