Как вызвать фреймворк Android c ++ функциями в JNI?

Мне нужно вызвать эту функцию virtual sp<IOMX> getOMX(); в /framework/base/media/libmediaplayerservice/MediaPlayerService.h чтобы получить некоторую информацию в Android. Поэтому я использую JNI сделать это. Тем не менее, в коде C ++, я могу назвать функции C ++ платформы Android, как getOMX() ? Как сделать? Благодарю.

2

Решение

При использовании любых API, которые не являются «стабильными» с точки зрения Документ NDK, ты играешь с огнем. Но когда дело доходит до getOMX()Огонь не очень горячий.

Вы можете получить заголовки из исходного кода AOSP, например,

git clone https://android.googlesource.com/platform/frameworks/av

а также #include "frameworks/av/include/media/IMediaPlayerService.h"

Вам также нужно будет предоставить систему .so файлы для компоновщика, в данном случае — libmediaplayerservice.so, Вы можете использовать команду

adb pull /system/lib/libmediaplayerservice.so .

чтобы получить эту библиотеку из эмулятора или с физического устройства.

2

Другие решения

Других решений пока нет …