Sto utilizzando il codice JNI in un progetto Android in cui la funzione nativa JNI richiede un argomento breve []. Tuttavia, i dati originali vengono memorizzati come ByteBuffer. Sto provando a convertire il formato dei dati come segue.Come posso ottenere un abbreviazione [] da un ByteBuffer
ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();
Ma ho incontrato il seguente problema quando si esegue la seconda riga di codice mostrato sopra:
E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)
qualcuno potrebbe suggerire un mezzo per realizzare la conversione?
Potrebbe spiegare un po 'di più perché l'utilizzo di allocateDirect()? Dal momento che non trovo alcun suggerimento dalla documentazione di Android. – bei
È un'intuizione basata su [un bug report] (http://code.google.com/p/android/issues/detail?id=24327) che è stato archiviato. Potrebbe non essere correlato, ma ho pensato che fosse degno di nota. – Eric
Ho lo stesso errore con questo. –