亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android在JNI中使用ByteBuffer的方法

2020-04-11 11:36:39
字體:
來源:轉載
供稿:網友

本文實例講述了Android在JNI中使用ByteBuffer的方法。分享給大家供大家參考。具體如下:

一、ByteBuffer 定義

在NIO中,數據的讀寫操作始終是與緩沖區相關聯的(讀取時信道(SocketChannel)將數據讀入緩沖區,寫入時首先要將發送的數據按順序填入緩沖區)
緩沖區是定長的,基本上它只是一個列表,它的所有元素都是基本數據類型。ByteBuffer是最常用的緩沖區,它提供了讀寫其他數據類型的方法,且信道的讀寫方法只接收ByteBuffer。

ByteBuffer有以下幾種常見屬性:

mark:初始值為-1,標記索引地點;
position:初始值為0,索引下標;
limit:最好定義成bytebuffer的長度,即允許可讀空間長度;
capacity:緩沖區能容納的數據元素的最大數量,創建之后無法被改變;

二、ByteBuffer使用

1. 創建ByteBuffer

① 使用allocate()創建:

ByteBuffer buf = ByteBuffer.allocate(length);//length表示buf的長度

② 使用數組創建:

ByteBuffer buf = ByteBuffer.wrap(byteArray);//byteArray表示一個數組

2. 回繞緩沖區

buf.flip();

這個方法用來將緩沖區準備為數據傳出狀態,執行以上方法后,輸出通道會從數據的開頭而不是末尾開始.回繞保持緩沖區中的數據不變,只是準備寫入而不是讀取。

3. 清除緩沖區

buf.clear();

這個方法實際上也不會改變緩沖區的數據,而只是簡單的重置了緩沖區的主要索引值.不必為了每次讀寫都創建新的緩沖區,那樣做會降低性能.相反,要重用現在的緩沖區,在再次讀取之前要清除緩沖區。

4. ByteBuffer與byte[]交互

byte[] bytearray = new byte[10];ByteBuffer buf = ByteBuffer.wrap(bytearray);//將數組寫入bufbytearray = new byte[buf.remaining()];buf.get(bytearray,0,bytearray.length());//將數據讀到數組中bytearray = new byte[buf.capacity()];

三、ByteBuffer與JNI交互

在Java1.4版本中引入的JNI有三個函數可以用于NIO的直接緩沖器。一個直接字節緩沖器是一個用于字節數據的容器,Java將盡力在它上面執行本機I/O操作。JNI定義了三個用于NIO操作的函數。

基于到存儲器地址的指針以及存儲器長度(容量),函數分配并且返回一個新的Java.nio.ByteBuffer。如果函數沒有針對當前Java虛擬機實現,則返回NULL,或者拋出一個異常。如果沒有存儲器可用,則將會拋出一個OutOfMemoryException。

jobject NewDirectByteBuffer(void* address, jlong capacity);

GetDirectBufferAddress函數返回一個指向被傳入的java.nio.ByteBuffer對象的地址指針。如果函數尚未針對當前虛擬機實現,或者如果buf不是java.nio.ByteBuffer的一個對象,又或者存儲器區尚未定義,則都將返回NULL。

void* GetDirectBufferAddress(jobject buf);

GetDirectBufferCapacity函數返回被傳入的java.nio.ByteBuffer對象的容量(以字節計數)。如果函數沒有針對當前環境實現,或者如果buf不是java.nio.ByteBuffer類型的對象返回-1。

jlong GetDirectBufferCapacity(jobject buf);

1. Jni中調用

Java層:

 public final int processData(ByteBuffer data);

Native 接口:

 private native long native_Process(ByteBuffer data);

Jni層:

static jlong native_Process(JNIEnv *env,jobject obj,jobject data);

注意ByteBuffer在JNI層中的簽名:Ljava/nio/ByteBuffer;

2. 示例(C++):

jclass cls = env->GetObjectClass(obj);jfieldID fid = env->GetFieldID(cls, "data","Ljava/nio/ByteBuffer;");jobject bar = env->GetObjectField(obj, fid);pImageData->data= (MByte*)env->GetDirectBufferAddress(bar);//data是結構體pImageData中的byte[];

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美肥婆姓交大片| 久久视频在线视频| 国产精品va在线播放| 麻豆一区二区在线观看| 国产精品久久久久久久久久久久| 伊人久久久久久久久久| 亚洲成人网在线观看| 亚洲在线观看视频| 成人国产精品免费视频| 成人免费直播live| 欧美午夜精品久久久久久人妖| 九九热这里只有精品免费看| 欧美大胆在线视频| 亚洲专区在线视频| 亚洲91av视频| 韩国19禁主播vip福利视频| 色综久久综合桃花网| 国产有码在线一区二区视频| 欧美精品福利视频| 最近中文字幕日韩精品| 久久6免费高清热精品| 欧美老少配视频| 成人免费高清完整版在线观看| 久久亚洲精品视频| 久久久久这里只有精品| 亚洲成人av在线| 精品视频在线播放色网色视频| 国产午夜精品久久久| 91精品国产99久久久久久| 亚洲xxxx做受欧美| 不用播放器成人网| 中文字幕9999| 成人免费视频网址| 韩剧1988在线观看免费完整版| 成人黄色大片在线免费观看| 国产美女久久久| 欧美区在线播放| 国产亚洲精品久久| 国产精品久久久久久久久久久不卡| 亚洲天堂网站在线观看视频| 亚洲女人天堂色在线7777| 国产亚洲精品一区二区| 亚洲香蕉av在线一区二区三区| 久久久久这里只有精品| 91在线直播亚洲| 日韩av网站在线| 欧美性开放视频| 久久久免费精品| 另类美女黄大片| 欧美超级免费视 在线| 国产欧美最新羞羞视频在线观看| 日韩精品中文字| 欧美午夜www高清视频| 亚洲最大av网| 国产一区二区日韩精品欧美精品| 日韩视频中文字幕| 欧美日韩国产精品一区| 黄色成人av网| 国产精品永久免费在线| 欧美一区二区色| 在线日韩日本国产亚洲| 亚洲人成网站在线播| 日韩hd视频在线观看| 一本久久综合亚洲鲁鲁| 亚洲激情小视频| 国产精品丝袜视频| 成人xxxxx| 色诱女教师一区二区三区| 亚洲电影免费观看高清完整版在线| 9.1国产丝袜在线观看| 国产视频久久久久| 亚洲一区二区三区久久| www.xxxx欧美| 精品久久久国产精品999| 久久精品国产69国产精品亚洲| 国产精品国产自产拍高清av水多| 久久久国产视频| 久久国产精品视频| 国产精品久久久久久久久久久不卡| 精品久久久久久久久久久| 中文亚洲视频在线| 欧美日韩视频在线| 欧美国产日本高清在线| 91久久久久久久久| 欧美午夜影院在线视频| 精品亚洲aⅴ在线观看| 国产在线视频2019最新视频| 国产精品高潮在线| 高清日韩电视剧大全免费播放在线观看| 亚洲二区在线播放视频| 国产又爽又黄的激情精品视频| 欧美—级高清免费播放| 色www亚洲国产张柏芝| 日韩女优人人人人射在线视频| 亚洲成人久久一区| 亚洲欧美国内爽妇网| 色综合久久88色综合天天看泰| 欧美视频中文字幕在线| 永久免费精品影视网站| 国产精品美女免费视频| 久久久视频免费观看| 精品亚洲夜色av98在线观看| 国产精品三级在线| 久久久久国产一区二区三区| 国产69精品久久久久99| 国产精品大陆在线观看| 中文日韩在线视频| 亚洲人成网站在线播| 日韩亚洲一区二区| 91亚洲va在线va天堂va国| 成人黄色片网站| 国产精品网红直播| 91精品视频播放| 欧洲美女7788成人免费视频| 一夜七次郎国产精品亚洲| 欧美性在线视频| 97精品国产97久久久久久免费| 欧美—级高清免费播放| 亚洲精品久久久一区二区三区| 日韩电影免费在线观看中文字幕| 国产一区私人高清影院| 大桥未久av一区二区三区| 亚洲精品成人网| 在线播放国产一区中文字幕剧情欧美| 日本精品久久久久影院| 亚洲午夜女主播在线直播| 91精品国产综合久久香蕉的用户体验| 97在线观看免费| 91精品国产91| 亚洲一区二区三区在线免费观看| 国产91成人video| 亚洲电影免费观看| 欧美国产亚洲视频| 亚洲国产成人精品电影| 久久国产精品网站| 色婷婷av一区二区三区久久| 亚洲欧洲日本专区| 琪琪第一精品导航| 亚洲美女久久久| 国产日韩欧美视频在线| 97视频在线免费观看| 国产精品看片资源| 激情亚洲一区二区三区四区| 性夜试看影院91社区| 亚洲精品网址在线观看| 庆余年2免费日韩剧观看大牛| 亚洲国产精品999| 青青在线视频一区二区三区| 黄网站色欧美视频| 亚洲国产精品va在看黑人| 亚洲直播在线一区| 欧美日韩国产精品| 精品女同一区二区三区在线播放| 亚洲最大av在线| 午夜精品一区二区三区在线播放| 久久99热这里只有精品国产| 精品国产一区二区三区久久久| 久久韩国免费视频| 国产一区二区视频在线观看| 欧美日韩福利在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 欧美高清不卡在线| 另类色图亚洲色图| 久久天天躁日日躁|