如何从NDK中的本机代码打印到Android屏幕?

如何从NDK中的本机代码打印到Android屏幕?,第1张

概述我希望将我的本机代码(在C中)的printf语句的输出打印到android屏幕上.由于我希望在Android屏幕上看到许多输出,我想要的东西比JNI函数末尾的返回语句更多,每个函数都打印一个文本.怎么去呢?编辑:例如,在我的C代码中,如果我希望在“HelloWorld”这样的函数中打印一些东西,我该怎么

我希望将我的本机代码(在C中)的printf语句的输出打印到android屏幕上.由于我希望在Android屏幕上看到许多输出,我想要的东西比JNI函数末尾的返回语句更多,每个函数都打印一个文本.怎么去呢?

编辑:

例如,在我的C代码中,如果我希望在“Hello World”这样的函数中打印一些东西,我该怎么办?现在,我可以打印“只返回!”在AndroID屏幕上使用setText方法.

Jstring Java_com_example_encryptString( jnienv* env, jobject thiz) {   printf("Hello World");   return (*env)->NewStringUTF(env, "only from return!");}

我知道一种方法,我从java类调用此方法,并使用TextVIEws在AndroID屏幕上打印它.但是,这可以只打印和打印函数返回的值而不打印任何其他值.我不能打印该函数未返回的任何其他值吗?

谢谢.

注意:我不是在寻找logcat中的androID日志.

解决方法:

如果我正确理解你的问题,你的意思是从c代码在TextVIEw中设置文本,对吗?

如果是这样,你可以这样做.您需要将TextVIEw作为参数传递给您的本机方法.然后在您的本机代码调用中找到它的setText方法并调用它.

您可以在此thread on SO或page上阅读更多内容.

您将本机方法更改为以下内容:

Jstring Java_com_example_encryptString( jnienv* env, jobject thiz, jobject jtextVIEwObject, ...){    //getting set text method    jclass clazz = (*env)->FindClass(env, "androID/Widget/TextVIEw");    jmethodID setText = (*env)->getmethodID(env, clazz, "setText", "(Ljava/lang/CharSequence;)V");    ... do stuff ...    //set text to text vIEw    Jstring Jstr = (*env)->NewStringUTF(env, "This comes from jni.");    (*env)->CallVoIDMethod(env, jtextVIEwObject, setText, Jstr);    ... do stuff ...    return (*env)->NewStringUTF(env, "only from return!");}

您还需要在java代码中更改本机方法的签名,以在params中添加TextVIEw.

总结

以上是内存溢出为你收集整理的如何从NDK中的本机代码打印到Android屏幕?全部内容,希望文章能够帮你解决如何从NDK中的本机代码打印到Android屏幕?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存