首页 文章 精选 留言 我的

精选列表

搜索[提示词调教],共10000篇文章
优秀的个人博客,低调大师

Android JNI实现简单的c层调用Java层函数(C层调用Java层Toast进行提示)

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 以前做过一段时间的JNI开发但是总是容易忘记一些简单的jni操作,最近重拾走过的jni开发之路,这里记录下如何在c层调用Java层类及方法,这里的类和方法可以是SDK里面的,也可以是自己编写的。这里分别给出测试工程,工程地址在文章末尾给出。JNI开发的环境配置及简单的JNI介绍百度一下资料很多。 首先编写MyTest.java类 import android.content.Context; import android.widget.Toast; /** * Created by hty on 2016/8/5. */ public class MyTest { static { System.loadLibrary("mytest"); } private Context mContext; public MyTest(Context mContext){ this.mContext = mContext; } public void show(String msg){ Toast.makeText(mContext,msg,Toast.LENGTH_SHORT).show(); } //调用自定义类的方法 public native void callShow(String msg); //调用SDK里面的方法 public native void callToastShow(Context context,String msg); } 然后利用javah生成对应的头文件 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> #include <android/log.h> /* Header for class com_scu_jnidemo_MyTest */ #define TAG "mytest" #define LOGE(...) __android_log_print(__ANDROID_LOG_ERROR,TAG,__VA_ARGS_)/*这里是LOGE日志*/ #ifndef _Included_com_scu_jnidemo_MyTest #define _Included_com_scu_jnidemo_MyTest #ifdef __cplusplus extern "C" { #endif /* * Class: com_scu_jnidemo_MyTest * Method: callShow * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_scu_jnidemo_MyTest_callShow (JNIEnv *, jobject, jstring); /* * Class: com_scu_jnidemo_MyTest * Method: callToastShow * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_scu_jnidemo_MyTest_callToastShow (JNIEnv *, jobject,jobject, jstring); #ifdef __cplusplus } #endif #endif 最后编写对应的.cpp文件 // // Created by hty on 2016/8/5. // #include "com_scu_jnidemo_MyTest.h" /* * Class: com_scu_jnidemo_MyTest * Method: callShow * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_scu_jnidemo_MyTest_callShow (JNIEnv *env, jobject thiz, jstring str){ jclass myclass = env->FindClass("com/scu/jnidemo/MyTest"); jmethodID mid = env->GetMethodID(myclass,"show","(Ljava/lang/String;)V"); env->CallVoidMethod(thiz,mid,str); } /* * Class: com_scu_jnidemo_MyTest * Method: callToastShow * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_scu_jnidemo_MyTest_callToastShow (JNIEnv *env, jobject thiz,jobject context, jstring str){ jclass tclss = env->FindClass("android/widget/Toast"); jmethodID mid = env->GetStaticMethodID(tclss,"makeText","(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); jobject job = env->CallStaticObjectMethod(tclss,mid,context,str); jmethodID showId = env->GetMethodID(tclss,"show","()V"); env->CallVoidMethod(job,showId,context,str); } 最后在主程序里面进行测试: package com.scu.jnidemo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity implements View.OnClickListener{ private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView)findViewById(R.id.text); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); } @Override public void onClick(View view) { MyTest myTest = new MyTest(this); switch (view.getId()){ case R.id.button1: myTest.callShow("这个是调用MyTest类里面的show"); break; case R.id.button2: myTest.callToastShow(this,"这个是JNI直接调用Toast"); break; } } } 在程序里面需要注意的是在local.propreties里面需要将对应的sdk.dir和ndk.dir改成自己的路径 这里给出工程源码地址:JNI实现C层调用Java层函数

优秀的个人博客,低调大师

美国商务部重组人工智能安全研究所,移除“安全”一词

美国商务部近日宣布将原美国人工智能安全研究所(U.S. AI Safety Institute)更名为人工智能标准与创新中心(CAISI),这项变动标志着该机构将重点从总体安全转向更加专注于应对国家安全风险和减少不必要的国际监管。 商务部长霍华德・卢特尼克(Howard Lutnick)于6月3日正式发布了这一消息,并表示此次重组旨在 “评估和增强美国创新”,同时确保美国在国际人工智能标准中保持领导地位。 人工智能安全研究所成立于2023年,旨在为全球各国政府提供最佳实践,以降低人工智能系统可能带来的风险。该研究所与 OpenAI 和 Anthropic 等美国主要人工智能公司达成了谅解备忘录,允许在新模型发布前获得使用权,并提出改进建议。 2025年,拜登任期接近尾声时,该研究所发布了一份关于管理人工智能风险的指南草案。草案中提到的风险包括利用系统制造生物武器,以及一些更常见的有害内容,如儿童性虐待内容(CSAM)。 新成立的研究所将特别关注一些可证实的风险,主要包括网络安全、生物安全以及化学武器等领域。此外,该研究所还将研究由于使用竞争对手的人工智能系统而导致的恶意外国影响。 此次重组可以被视为特朗普政府加速美国人工智能公司扩张的一项重要举措。在特朗普上任的第一天,他便撤销了拜登政府的一项行政命令,该命令要求为大型人工智能系统制定新安全标准,并发布了一份评估美国消费者和劳动力市场潜在风险的报告。 与此相对,特朗普政府发布的行政命令鼓励在教育等领域更加广泛地应用生成式人工智能,并推动使用煤炭为高耗能的人工智能数据中心提供电力。此外,当前的共和党预算法案中还包括了一项为期10年的州级人工智能监管禁令,该条款甚至遭到特朗普党内一些人的反对。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册