Estoy usando código JNI en un proyecto de Android en el que la función nativa JNI requiere un argumento corto []. Sin embargo, los datos originales se almacenan como ByteBuffer. Estoy intentando convertir el formato de datos de la siguiente manera.¿Cómo puedo obtener corto [] de un ByteBuffer
ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();
Pero me encuentro con el siguiente problema cuando se ejecuta la segunda línea de código mostrado arriba
E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)
Podría alguien sugerir un medio para implementar la conversión?
Podría explicar un poco más por qué el uso allocateDirect()? Como no encuentro ninguna pista de la documentación de Android. – bei
Es un presentimiento basado en [un informe de error] (http://code.google.com/p/android/issues/detail?id=24327) que se archivó. Puede no estar relacionado, pero pensé que valía la pena mencionarlo. – Eric
Me sale el mismo error con esto. –