Самый чистый способ вызова кода CPP для Android - это, как правило, копирование соответствующих фрагментов в ваш репозиторий и создание как часть вашего приложения. Следуя этому подходу, ваше приложение будет вызывать только общедоступные API - либо Java, либо C/C++.
Но это может быть не актуально в тех случаях, когда этот код должен выполняться со специальными разрешениями, например, в виде системного сервиса, например медиаберивателя или Bluetooth.
Я боюсь, что код, который вы хотите запустить, относится к этой второй категории, поэтому ни один из доступных трюков не поможет.
С другой стороны, пользовательский ПЗУ может быть решением, которое вы ищете. Может случиться так, что вам не нужно подделывать полную систему. Этого может быть достаточно, чтобы использовать корневое устройство и заменить службу bluetooth на свой собственный.
Я бы порекомендовал вам предоставить отсутствующие обратные вызовы для службы, вместо того, чтобы вызывать функции непосредственно из вашего приложения: лучше не смешивать контексты между приложением пользовательского пространства и системным сервисом.
Мне нужно получить (специфичные для поставщика) скрыть отчеты с моего устройства. В настоящее время система Android работает со всеми отчетами. Просмотрев код, я обнаружил, что 'get_report_cb' в' sBluetoothHidCallbacks' оставлен в этом коде NULL. Также класс 'BluetoothInputDevice' не имеет интерфейса обратного вызова для получения этих отчетов. Поэтому я хочу разместить свою собственную функцию обратного вызова и взаимодействовать с этим кодом непосредственно в своем приложении, обойдя java-стек Android, если это необходимо. – GPS