Korzystam z kodu JNI w projekcie Android, w którym funkcja macierzysta JNI wymaga krótki argument []. Jednak oryginalne dane są przechowywane jako ByteBuffer. Próbuję przekonwertować format danych w następujący sposób.Jak mogę uzyskać krótkie [] z ByteBuffer
ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();
Ale napotkać następujący problem podczas uruchamiania drugą linię kodu przedstawionego powyżej:
E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)
Czy ktoś może zaproponować środki do realizacji konwersji?
mógłbyś wyjaśnić nieco więcej, dlaczego używając allocateDirect()? Ponieważ nie znajduję żadnych wskazówek z dokumentacji Androida. – bei
To przeczucie oparte na [zgłoszeniu błędu] (http://code.google.com/p/android/issues/detail?id=24327), które zostało zgłoszone. To może nie mieć związku, ale pomyślałem, że warto o tym wspomnieć. – Eric
Otrzymuję ten sam błąd z tym. –