Ich benutze JNI-Code in einem Android-Projekt, in dem die JNI native Funktion ein kurzes [] Argument benötigt. Die ursprünglichen Daten werden jedoch als ByteBuffer gespeichert. Ich versuche das Datenformat wie folgt zu konvertieren.Wie bekomme ich kurz [] von einem ByteBuffer
ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();
Aber ich begegnen folgendes Problem, wenn die zweite Codezeile ausgeführt wird oben gezeigt:
E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)
Könnte jemand ein Mittel vorschlagen, um die Umwandlung zu implementieren?
Könnten Sie ein bisschen mehr erklären, warum allocateDirect() verwenden? Da finde ich keine Hinweise aus der Android-Dokumentation. – bei
Es ist eine Ahnung basierend auf [einem Fehlerbericht] (http://code.google.com/p/android/issues/detail?id=24327), der eingereicht wurde. Es mag nicht verwandt sein, aber ich fand es erwähnenswert. – Eric
Ich bekomme den gleichen Fehler damit. –