我在其中JNI本机函数需要短[]参数的Android项目中使用JNI代码。但是,原始数据存储为ByteBuffer。我试图按照以下方式转换数据格式。如何从ByteBuffer获得short []
E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)
任何人都可以建议执行转换的装置:
ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();
但是运行上面所示的第二行代码时,我会遇到以下问题?
你能解释一点,为什么使用allocateDirect()?因为我没有从android文档中找到任何提示。 – bei 2012-08-13 08:54:38
这是基于提交的[错误报告](http://code.google.com/p/android/issues/detail?id=24327)的预感。这可能是无关的,但我认为这值得一提。 – Eric 2012-08-13 18:06:34
我收到与此相同的错误。 – 2014-10-10 12:08:25