Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
1

Вызов системной JNI-функции из своего приложения

27.08.2015, 21:44. Просмотров 377. Ответов 8
Метки нет (Все метки)

Имеется Highscreen ICE 2, у которого есть второй дисплей на задней панели(OLED).
Хочу получить доступ к рисованию на этом экране.
В результате декомпиляции стоковой прошивки выяснил, что для рисования система использует службу OledService, в которой есть только прототипы нужных функций на java, а сами функции объявлены через JNI на си в system\lib\libandroid_servers.so.
Названия функций:
  • refreshScreen_native
  • setMode_native
  • open_native
  • close_native
Как можно вызвать эти функции из своего приложения?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2015, 21:44
Ответы с готовыми решениями:

Вызов permission своего приложения
Здравствуйте. Подскажите вот по этому коду Intent appSettingsIntent = new...

Как позвонить из своего приложения?
в продолжение темы http://www.cyberforum.ru/android-dev/thread1105084.html ...

Создание своего дизайна для приложения
Доброго времени суток! Я новичок в программировании под Андроид, и у меня есть...

Смена языка для своего приложения
Доброго времени суток. Как мне реализовать смену языка у своего приложения? При...

Как из своего Android-приложения вызвать другое?
Всем привет. Собственно из названия все понято . Вот у меня есть приложение и...

8
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
28.08.2015, 01:44 2
Цитата Сообщение от XTracer Посмотреть сообщение
В результате декомпиляции стоковой прошивки выяснил
Я не понял, вы декомпилировали программу на С/С++? (уж очень вторая картинка на дезасемблер похожа - для меня это важно). Или это декомпил явы?

По с/с++ сильно не помогу, но почитайте про основы NDK. Там в статьях есть примеры подключения вашей либы к проекту и работу с ней. Может это поможет: http://habrahabr.ru/company/redmadrobot/blog/265117/
Там вроде тоже основы подключения увидел...
0
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 11:44  [ТС] 3
на первом скриншоте кусок из декомпилированного services.jar, на втором скрине часть дизассемблинга libandroid_servers.so, в которой происходит регистрация JNI функций для java.
сами функции(на си которые), как я понял, просто открывают /dev/OLED и пишут в него массив, попробую копать в эту сторону еще
0
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 13:15  [ТС] 4
пробовал писать в "/dev/OLED" - не вышло, нет доступа.
через System.loadLibrary("android_servers") тоже не получается обращаться к native функциям, ведь они же регистрируются только для класса "com/android/server/OledService"?
0
Миниатюры
Вызов системной JNI-функции из своего приложения  
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 13:31  [ТС] 5
Регистрация происходит примерно таким кодом(получил код на основе другой службы у которой есть исходный код на c++):
C++
1
2
3
4
int register_android_server_OledService(JNIEnv *env) {
    return jniRegisterNativeMethods(env, "com/android/server/OledService",
            method_table, NELEM(method_table));
}
в method_table нужные 4 функции
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
29.08.2015, 00:25 6
Цитата Сообщение от XTracer Посмотреть сообщение
на втором скрине часть дизассемблинга libandroid_servers.so
Извини что не по теме, но каким инструментом подобное делается?

Не по теме:

Пытаюсь лицензионную защиту своей программы через ключи встроить на уровне С++ и не хотелось бы чтобы получасовое изучение кодов через дизасемблер позволило бы написать свой генератор ключей. Хочу просмотреть свою-же программу через дизасемблер

0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5119 / 1557 / 950
Регистрация: 23.01.2011
Сообщений: 3,187
Завершенные тесты: 1
29.08.2015, 08:15 7
XTracer, код выкладывается на форум в виде текста, оформленного соответствующим тэгом, а не в виде картинок
0
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
29.08.2015, 10:08  [ТС] 8
Tester64, это IDA PRO
Ev[G]eN, как мне изменить скрины на код? кнопки Правка уже нет
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5119 / 1557 / 950
Регистрация: 23.01.2011
Сообщений: 3,187
Завершенные тесты: 1
29.08.2015, 16:00 9
XTracer, вставляйте код в новое сообщение, я перенесу. на будущее имейте ввиду
0
29.08.2015, 16:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2015, 16:00

Как добавить будильник из своего приложения в систему
Здравствуйте такой вопрос. как добавить будильник из своего приложения в...

Запись logcat в файл на SD-card из своего приложения
Добрый день! Вроде все просто и понятно, но видимо я слишком уж "зеленый" в...

Как заменить ключ от своего приложения в Google Play?
При попытке публикации обновления для приложения у меня возникает ошибка,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru