`
netxdiy
  • 浏览: 728240 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android ndk实现java层代码。。

 
阅读更多

转自:http://groups.google.com/group/android-ndk/browse_thread/thread/d00884fe886e5233?fwc=1


Everything what can be done in Android Java can be done also in Native

code using JNI. The code just looks difficult and is harder to write,
but at least things are possible.
To get device IMEI, here's code:

JNIEnv &env = ...
jobject activity = ... (android.app.Activity object)
//TelephonyManager telephony_manager =
getSystemService(Context.TELEPHONY_SERVICE);
jmethodID mid = env.GetMethodID(env.GetObjectClass(activity),
"getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;");
jobject telephony_manager = env.CallObjectMethod(activity, mid,
env.NewStringUTF("phone"));
//String s_imei = tm.getDeviceId();
mid = env.GetMethodID(env.GetObjectClass(telephony_manager),
"getDeviceId", "()Ljava/lang/String;");
jstring s_imei = (jstring)env.CallObjectMethod(telephony_manager,
mid);
if(env.ExceptionCheck()){
env.ExceptionClear();
return false;
}
const jchar *imei = env.GetStringCritical(s_imei, NULL);
// copy imei string anywhere you need
env.ReleaseStringCritical(s_imei, imei);

This assumes that your app is standard Android android.app.Activity,
and native code is called from this.


分享到:
评论

相关推荐

    Android NDK底层和java代码相互传值调用(实用经典Demo)

    通过以上步骤,我们可以在Android NDK底层和Java代码之间实现灵活的数据传递和方法调用。实际项目中,还可以结合JNI的其他功能,如文件操作、多线程等,进一步提升应用性能和功能。记得在实际开发中,遵循最佳实践,...

    NDK开发so层与java代码相互调用

    本文将深入探讨如何在Android项目中进行NDK开发,使得Java代码能够调用SO(Shared Object)库中的原生函数,同时SO库也能反向调用Java代码。 ### NDK简介 NDK提供了一组工具,使得开发者能够在Android平台上编译和...

    android NDK实现的Hanlder-消息队列-native多线程实例

    本实例关注的是如何在Android NDK环境下实现一个类似Java层的消息队列(Message Queue)和Handler机制,以及如何在原生代码中创建和管理多线程。 首先,我们要理解Java层的Handler和消息队列的工作原理。在Java中,...

    android ndk开发实例代码

    Android NDK是一个重要的工具集,它允许开发者在Android应用中使用原生代码,如C++和Fortran,来实现性能敏感或需要底层硬件交互的部分。这个"android ndk开发实例代码"提供了一个入门级的示例,帮助开发者理解NDK和...

    android-ndk(android-ndk-r25b-windows.zip)

    在实际开发中,Android NDK通常与Java代码配合使用,Java负责应用程序的界面和逻辑,而NDK负责高性能的部分。结合使用Gradle插件,如CMake或ndk-build,可以方便地集成原生代码到Android Studio项目中。总的来说,...

    android ndk+代码混淆demo

    在Android开发中,Java代码可以通过ProGuard工具进行混淆,将类名、方法名和变量名替换为简短的无意义的名称,增加逆向工程的难度。混淆后的代码难以阅读和理解,有助于防止代码被盗用或者恶意修改。 【Demo】通常...

    android-ndk(android-ndk-r23b-windows.zip)

    JNI(Java Native Interface)是Java与本地代码交互的桥梁,它允许Java代码调用C/C++函数,反之亦然。在NDK中,开发者可以编写JNI接口,然后在Android应用的Java层通过这些接口来调用本地代码。 Android-ndk-r23b...

    android-ndk(android-ndk-r23b-linux.zip)

    3. **本地化支持**:NDK允许开发者用原生代码实现特定语言或地区的功能,比如本地化的日期和时间格式处理。 4. **JNI接口**:Java Native Interface (JNI) 是Android应用与NDK之间通信的关键。通过JNI,Java代码...

    android ndk下编译的live555源码(新版)

    在Android系统中,由于原生的Java API无法直接处理这些底层的流媒体协议,因此需要借助于NDK(Native Development Kit)来实现C或C++代码的编译,将Live555移植到Android平台。 **关于Live555:** Live555是一个...

    Android NDK 实现串口工具

    NDK通过JNI(Java Native Interface)使Java代码能够调用原生代码,反之亦然。 接下来,我们关注的是SerialPort部分。串口通信是一种常用的数据通信方式,适用于设备间的短距离、低速率通信。在Android设备上,串口...

    androidNDK编程java传递参数到c

    使用NDK的`ndk-build`(或者Gradle的`externalNativeBuild`配置)来编译C/C++代码为本地库`.so`文件,这个库将被Java代码加载并调用。 5. **Java调用 native 方法**: 最后,在Java代码运行时,可以通过`callNative...

    Android NDK环境配置

    接下来是Java代码的编译过程。首先,使用`javac`命令将Java源文件编译为.class字节码文件。当一个类B导入了类A,你需要在编译B时提供A的路径,通过-classpath选项指定。例如,如果`MyJni.java`在`D:/...

    android-ndk(android-ndk-r26b-darwin.zip)

    3. **JNI(Java Native Interface)**:通过JNI,NDK允许Java代码与原生代码进行交互。开发者可以在Java层调用C/C++函数,反之亦然,这在处理系统调用、底层硬件操作或者实现复杂算法时非常有用。 4. **本地库的...

    android NDK(java调用C)

    NDK是一组工具,允许开发者使用C和C++编写部分应用代码,并与Java代码无缝集成。本文将深入探讨如何在Android应用中通过Java调用C语言的函数。 首先,我们需要了解NDK的基本概念。NDK提供了一种方法,使得Java应用...

    Android NDK开发——C回调Java中的方法

    5. **在Java中调用C代码**:最后,在Java代码中调用`callFromC`方法,并传入实现了`NativeCallback`接口的对象。当C代码执行完毕并调用`onCallback`时,Java代码会接收到回调。 以上就是实现C回调Java方法的基本...

    android-ndk(android-ndk-r25b-linux.zip)

    - **安全**:部分敏感操作可以通过原生代码实现,降低被逆向工程分析的风险。 3. **NDK的组成**: - **编译工具链**:包括GCC和Clang等编译器,用于将C/C++源码编译为ARM、x86等架构的机器码。 - **构建系统**:...

    android-ndk(android-ndk-r25b-darwin.zip)

    12. **JNI函数注册**:在Java代码中使用原生方法前,需要在对应的C/C++代码中通过JNI注册表进行函数注册,以便Java层能够找到并调用这些函数。 13. **多线程支持**:NDK允许开发者创建原生线程,处理并发任务,但需...

    google android ndk demo

    2. **性能优化**:对于需要高效计算或大量计算的任务,如图像处理、游戏引擎、AI算法,使用NDK可以实现比纯Java代码更好的性能。 3. **利用硬件加速**:通过NDK,开发者可以直接操作硬件,如GPU、DSP等,以实现硬件...

    androidndk开发实战

    JNI允许Java代码调用C/C++函数,反之亦然。开发者需要理解JNI的接口定义、本地方法注册、数据类型转换等概念,以实现Java和原生代码的无缝交互。 “【eoe+Android特刊】第十九期:Android自定义控件.pdf”虽然不是...

    基于Android NDK 进行 OpenGL_ES开发的完整案例.doc

    Android NDK(Native Development Kit)是一套工具集合,帮助开发者使用 C 或 C++ 语言开发 Android 应用程序的原生代码部分。OpenGL ES 是一个用于移动设备的图形 API,能够在 Android 平台上提供良好的图形性能。...

Global site tag (gtag.js) - Google Analytics