конвертировать int16_t в jbytearray - PullRequest
2 голосов
/ 12 ноября 2010

Я использую нативную библиотеку в Android для потоковой передачи.


Вот сценарий:

Я передаю URL-адрес файла c и после большой обработки записывает данные в файл wav.

Я не очень знаком с C, но я могу понять, что есть указатель int16_t, из которого записан wav-файл.


Вот вопрос.

Есть ли способ преобразовать int16_t в jbytearray, чтобы я мог вернуть байтовый массив в свой код Java?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Я не знаю в первую очередь об Android, но вы, возможно, захотите взглянуть на java.nio.ByteBuffer - их можно сделать так, чтобы они выделяли свой буфер в собственной памяти (allocateDirect()), чтобы собственные функции могли писать прямо в него.

0 голосов
/ 13 ноября 2010

Вам необходимо выделить байт [], а затем скопировать в него данные WAV. В качестве альтернативы, создайте «прямой» ByteBuffer, который охватывает WAV-данные, и передайте его в свой Java-код.

Прочтите документацию JNI и документ JNI Tips для получения дополнительной информации. В частности:

SetByteArrayRegion NewDirectByteBuffer

...