конвертировать int16_t в jbytearray

1

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


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

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

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


Вот вопрос.

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

Спасибо

Теги:
android-ndk
jni

2 ответа

0
Лучший ответ

Вам нужно выделить байт [], а затем скопировать в него данные WAV. Кроме того, создайте "прямой" ByteBuffer, который охватывает WAV-данные и передаст их в ваш код Java.

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

SetByteArrayRegion NewDirectByteBuffer

  • 0
    Можете ли вы дать более подробную информацию об этом?
1

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

  • 0
    он не связан с java, все мои операции должны выполняться в коде c только для доступа к созданной переменной или для ее передачи. I Need to convert int16_t to jbytearray что мне важно.
  • 0
    В любом случае спасибо за ваш ответ
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню