日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android NDK学习笔记2:数组

發(fā)布時間:2024/9/30 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android NDK学习笔记2:数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/119152933
本文出自【趙彥軍的博客】

文章目錄

  • java數(shù)組和jni數(shù)組對應關系
  • jobjectArray 實戰(zhàn)
    • 獲取數(shù)組長度
    • 獲取數(shù)組第一個元素
  • jintArray 實戰(zhàn)
    • 獲取第一個元素

java數(shù)組和jni數(shù)組對應關系

kotlinjni
IntArrayjintArray
DoubleArrayjdoubleArray
LongArrayjlongArray
CharArrayjcharArray
ShortArrayjshortArray
ArrayjobjectArray
//kotlinexternal fun arrayInt(array: IntArray): Stringexternal fun arrayDouble(array: DoubleArray): Stringexternal fun arrayLong(array: LongArray): Stringexternal fun arrayChar(array: CharArray): Stringexternal fun arrayShort(array: ShortArray): Stringexternal fun arrayString(array: Array<String>): String //jni extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayInt(JNIEnv *env, jobject thiz, jintArray array) {// TODO: implement arrayInt() }extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayDouble(JNIEnv *env, jobject thiz,jdoubleArray array) {// TODO: implement arrayDouble() }extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayLong(JNIEnv *env, jobject thiz, jlongArray array) {// TODO: implement arrayLong() }extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayChar(JNIEnv *env, jobject thiz, jcharArray array) {// TODO: implement arrayChar() }extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayShort(JNIEnv *env, jobject thiz,jshortArray array) {// TODO: implement arrayShort() }extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayString(JNIEnv *env, jobject thiz,jobjectArray array) {// TODO: implement arrayString() }

jobjectArray 實戰(zhàn)

獲取數(shù)組長度

class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = arrayOf("first", "two")binding.sampleText.text = "長度為:" + arrayLength(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayLength(array: Array<String>): Intcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}} }

native-lib.cpp

extern "C" JNIEXPORT jint JNICALL Java_com_example_myapplication_MainActivity_arrayLength(JNIEnv *env, jobject thiz,jobjectArray array) {//獲取數(shù)組長度int length = env->GetArrayLength(array);return length; }

獲取數(shù)組第一個元素

lass MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = arrayOf("first", "two")binding.sampleText.text = "第一個元素:" + arrayFirst(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayFirst(array: Array<String>): Stringcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}} }

native-lib.cpp

extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_arrayFirst(JNIEnv *env, jobject thiz,jobjectArray array) {//獲取array第一個元素jobject first = env->GetObjectArrayElement(array, 0);//把jobject強轉(zhuǎn)成jstringreturn static_cast<jstring>(first); }

jintArray 實戰(zhàn)

獲取第一個元素

class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = intArrayOf(1, 2, 3)binding.sampleText.text = "第一個元素:" + arrayInt(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayInt(array: IntArray): Intcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}} }

native-lib.cpp

extern "C" JNIEXPORT jint JNICALL Java_com_example_myapplication_MainActivity_arrayInt(JNIEnv *env, jobject thiz, jintArray array) {jint *result = env->GetIntArrayElements(array, JNI_FALSE);//獲取第一個元素return result[0]; }

總結

以上是生活随笔為你收集整理的Android NDK学习笔记2:数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。