Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
XTracer
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
#1

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

27.08.2015, 21:44. Просмотров 362. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вызов системной JNI-функции из своего приложения (Программирование Android):

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

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

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

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

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

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

8
Tester64
396 / 357 / 44
Регистрация: 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 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
29.08.2015, 00:25 #6
Цитата Сообщение от XTracer Посмотреть сообщение
на втором скрине часть дизассемблинга libandroid_servers.so
Извини что не по теме, но каким инструментом подобное делается?

Не по теме:

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

0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
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
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
29.08.2015, 16:00 #9
XTracer, вставляйте код в новое сообщение, я перенесу. на будущее имейте ввиду
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2015, 16:00
Привет! Вот еще темы с ответами:

Как сохранить данные своего приложения через аккаунт Google? - Программирование Android
Моему приложению нужно сохранять данные своего пользователя в Интернете, мои многочисленные попытки через ftp хостинг не удались (не...

Вызов другого приложения из текущего - Программирование Android
Как вызвать другое приложение при нажатии той же кнопки? Читал, что нужна уникальная ссылка, а вот какая и где её взять.... Буду благодарен...

Вызов метода перед завершением работы приложения - Программирование Android
Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для...

Вызов метода при каждом открытии приложения - Программирование Android
Мне нужно, что бы при открытии приложения вызывался определенный метод. Если ставлю в onCreate, то вызов его происходит только если все...


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

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

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