0
我正在處理一些我無法控制的代碼,而且我正在處理的ByteBuffer被傳遞給本地方法。我沒有訪問本地代碼,但它期望「buf」是一個ByteBuffer。還要注意,代碼沒有任何意義,但有很多,所以我正在將它提煉出來。把一個字節緩衝區放到一個包中
public class otherClass {
public final void setParams(Bundle params) {
final String key = params.keySet()[0];
Object buf = params.get(key));
nativeSet(key, buf);
}
private native final void nativeSet(key, buf);
}
這裏是我的代碼:
public void myMethod(ByteBuffer myBuffer) {
final Bundle myBundle = new Bundle();
myBundle.putByteBuffer("param", myBuffer);
otherClass.setParams(runTimeParam);
}
的問題? Bundle中沒有putByteBuffer方法。似乎有點奇怪,有一個get()返回一個對象,但沒有通用put()。
但是,對我來說似乎很奇怪的是,本機代碼需要一個ByteBuffer。當它從Java層傳入時,是不是會有一堆元數據呢?可以在本地層進行編碼預測元數據並從ByteBuffer中提取?
有沒有什麼辦法在這裏可靠地傳遞一個ByteBuffer?它可能有點冒險。我想也許我可以找出ByteBuffer對象的位數,轉換爲整數,並使用putInt()。不知道如何從ByteBuffer對象到原始數據。