Android 在C代码中调用logcat

本文给《Android java传递int类型数组给C》中添加C代码中调用logcat的功能

Android.mk文件增加以下内容

LOCAL_LDLIBS += -llog

C代码中增加以下内容

#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

define C的宏定义 起别名 #define LOG_TAG "System.out" 给"System.out"起别名LOG_TAG

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
给 __android_log_print函数起别名 写死了前两个参数 第一个参数 优先级 第二个参数TAG  __VA_ARGS__ 可变参数的固定写法
LOGI(...)在调用的时候 用法跟printf()一样

 JNICALL Java_com_wuyudong_javapassdata_JNI_arrElementsIncrease(
        JNIEnv * env, jobject clazz, jintArray jArray){
      jsize len = (*env)->GetArrayLength(env, jArray);
      LOGD("length = %d", len);
     // jboolean iscopy;
      int* arrayPointer = (*env)->GetIntArrayElements(env, jArray, NULL);
      int i;
      for(i = 0; i < len; i++){
          *(arrayPointer + i) += 10;
      }
      return jArray;

 }

获取更多C语言与算法相关知识,关注公众号:“csuanfa”

时间: 2024-10-13 01:36:50

Android 在C代码中调用logcat的相关文章

入门: 使用JNI 从C++代码中调用Java的静态方法

开发环境: 操作系统: (uname -a output)  Linux ubuntu 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux JDK 版本 : (java -version) java version "1.7.0_51"OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubun

该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用

WebAPI使用属性路由,配置config.MapHttpAttributeRoutes();后出现错误: System.InvalidOperationException: 该对象尚未初始化.请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized(). 在 System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() 在 System.Web.Http.Routi

Dynamics AX 2012 R2 从代码中调用SSRS Report

    平时,我们制作SSRS Report的方法主要有两种:使用Query或RDP.如果需要为报表传递参数,就要在代码中为报表参数赋值,然后在代码中调用报表.下面我总结下这两种报表在代码中传参和调用的方式: 1.使用Query作为报表数据源 1.1.Dynamic Filters属性     在VS中,需要注意Report DataSource的Dynamic Filters属性. 1.1.1.如果Dynamic Filters属性为True的话,会在Report Parameter中生成一个

在代码中调用 mvc 4 api

mvc 4 api 的调用有很多种,最常见也最简单的一种是 用 ajax 的方式在前端界面中调用, 如果是在后台代码中调用 ,是要复杂一些,以下是 以 post 的方式调用 api 的封装好的方法: /// <summary> /// api 调用公共方法 /// </summary> /// <param name="url"> api url </param> /// <param name="param"&

Android基础:代码中实现界面动态布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView

SDRAM和重定位(二)---开始在汇编代码中调用 C 语言

前面的点亮led的代码由于比较简单,所以全部用汇编代码完成,但是随着代码越来越多,逻辑关系越来越复杂,想要完全用汇编代码来写程序不太现实,必须要借助 c 语言程序,那么就会有从汇编语言到 c 语言的一个过渡阶段. ======================================================= 如何在汇编语言中调用 c 语言? 在汇编中调用 c语言程序的方法很简单,只需利用汇编代码:bl xxx(函数名)即可,但是重点不是如何调用 c 程序,而是汇编代码要为运行 c

如何在java代码中调用一个web项目jsp或者servlet

有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个servlet中,只需要执行如下代码: URL url = new URL("http://192.168.2.123:8080/sace/ClearCache"); url.openStream(); openStream() 执行一次相当于一次URL请求,其中url.openStream(

[android]同步块代码中wait和sleep方法持有锁状态的区别

需求 最近项目中这么一个功能,希望app监听android file system,当有文件create/modify/detele时,app收到通知,把对应的变化信息告诉服务器 需求的解决方案 当我们用手机拍照时,会把拍照的文件保存在sdcard的DCIM文件夹下.当文件生成时,我们会接收到create/modify/write_close消息,我们要做的是在write_close之后,再发送消息给服务器,这样一来,当我们收到create消息时,就需要把当前线程阻塞住,直到收到write_cl

Android和JS代码互相调用

Android本地调用JS webView.loadUrl("javascript:showMsg()");  JS调用Android本地代码 Android本地代码 webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new MyJSObject(), "MyJSObject"); class MyJSObject{ /** * web页面js调用本地方法