Собственный сервис Android Binder, вызываемый из Java

Я создал собственный сервис связующего с несколькими типами транзакций.

На данный момент у меня есть собственный прокси ( Bp ) для клиентов, но я хочу дать Java-клиентам возможность использовать мой сервис.

По сути, я думаю, что Bp должен быть Java. Я нашел кое-что о JNI, но неполное. Мне нужно использовать JNI внутри Bn?

Также должен быть доступен механизм обратного вызова (спорадическое событие от службы к конкретному методу клиента). Я сделал это в родном.


person Cumatru    schedule 08.05.2016    source источник
comment
Мне удалось выполнить простой вызов, используя пример отсюда github.com/cloudchou/NativeBinderJavaClientDemo/blob/master/ Обратные вызовы из нативного кода в JNI и передача сложных структур данных остаются проблемой.   -  person Cumatru    schedule 08.05.2016


Ответы (1)


Вот мой первый ответ...

Как упоминал Cumatru, я также использовал https://github.com/cloudchou/NativeBinderJavaClientDemo.

Я еще не полностью понял весь процесс, но, по крайней мере, он работает, и это способ двигаться вперед с довольно «простым» примером. У меня очень базовый уровень Android, поэтому, пожалуйста, потерпите меня и помогите улучшить ответ так, как вам хочется.

Кажется, есть три части: 1. Серверный процесс, созданный на С++, работающий изначально. 2. Клиент приложения для Android. 3. Простой java-клиент, который будет встроен в .jar-файл.

Кажется, что никаких изменений в коде не требуется, по крайней мере, для простого java-клиента и c++-сервера.

  • Создайте и отправьте серверное приложение на вашу цель. Запустите его в оболочке adb.
  • Создайте и отправьте java-клиент (.jar-файл), называемый fclient, на вашу цель в /system/framework/
  • Запустите java-клиент с помощью fclient-script
  • Добавление будет сделано к двум целым числам, отправленным от клиента и возвращенным обратно на сервер.

Надеюсь, это сработает и для вас.

person magnussn    schedule 12.05.2017