motofan logo
       
> 

работа с закрытым флипом и обработка входящего вызова, в нативном софте

Ilya Petrov
сообщение 15.12.2007, 8:47


Ветеран
*****

Группа: Пользователи
Сообщений: 504
Регистрация: 30.12.2006
Из: Одесса
Пользователь №: 114 098
Модель телефона: 1742, 1744, 1980
Прошивка: openezx-2.6.30

Рейтинг: 166



собственно сабж.

1. реалплеер, будильник и проч. могут выводить инфу на экран с закрытым флипом - как сие реализовать?
2. какой сигнал откуда ловить, чтобы отследить входящий вызов? вручную через unix domain sockets ловить сообщение ниасилил - там как-то хитро.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Abrek
сообщение 31.1.2008, 17:37


Ветеран
*****

Группа: Пользователи
Сообщений: 321
Регистрация: 28.10.2007
Из: Тольятти
Пользователь №: 152 066
Модель телефона: MotoMing A1200E

Рейтинг: 124



Цитата(Ilya Petrov @ 15.12.2007, 12:47) *

собственно сабж.

1. реалплеер, будильник и проч. могут выводить инфу на экран с закрытым флипом - как сие реализовать?
2. какой сигнал откуда ловить, чтобы отследить входящий вызов? вручную через unix domain sockets ловить сообщение ниасилил - там как-то хитро.

За работу тела с закрытым флипом отвечает файл openwindow. Лежит тут "usr\SYSqtapp\windowsserver". Соответственно будет отображаться только то, что в этом файле заложено. Может его пропатчить как нить?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
eug
сообщение 1.2.2008, 23:06


Мастер
****

Группа: Пользователи
Сообщений: 174
Регистрация: 7.12.2007
Из: 53 км на юг от града Петра
Пользователь №: 156 234
Модель телефона: -

Рейтинг: 139



Цитата(Ilya Petrov @ 15.12.2007, 11:47) *

собственно сабж.

1. реалплеер, будильник и проч. могут выводить инфу на экран с закрытым флипом - как сие реализовать?
2. какой сигнал откуда ловить, чтобы отследить входящий вызов? вручную через unix domain sockets ловить сообщение ниасилил - там как-то хитро.


1 как работать с закрытым флипом не знаю, но если из проги тебе надо узнать о смене его состояния, то есть следующие 4 варианта:
а) при закрытии флипа идет focusOutEvent (именно так сейчас это обрабатывает ридер) - вариант подходит и для локера Е6
б) при закрытии флипа идет keyPressEvent c кодом 0x103c, на Е6 с локером вроде ничего не идет
в) у ZApplication есть сигнал flipStatusChanged(int); ему передается 1 когда флип закрывается и 0 когда открывается, аналога для локера Е6 не нашел, а этот сигнал при локе не посылается
далее делаешь в своей проге слот flipStatusChanged(int) и connect(qApp, SIGNAL(), this, SLOT())
г) есть C-функция int UTIL_GetFlipStatus() (1 - флип закрыт, 0 - флип открыт), можно её переодически опрашивать

2 по входящему вызову есть 2 С-функции int UTIL_GetIncomingCallStatus() - встанет в 1 пока идет вход запрос на вызов, но ты еще не ответил/отклонил, вообщем пока висит окно с вариантами твоих действий, а абонент еще не отказался от идеи с тобой поговорить
int UTIL_GetPhoneInCall() - встанет в 1, когда ты ответишь (при этом первая сбрасывается в 0)
еще есть 3 функция UTIL_CallConnectedStatus() - встанет в 1 когда установлено соединение, но здесь она не нужна
в свое время в фбридере я с помощью этих функций, повешенных на таймер (2 Гц) отслеживал вход/исход вызов, чтобы свернуть его из фулскрина (сейчас и это на focusOutEvent'е и в этом случае он посылается)
при исход вызове UTIL_GetPhoneInCall() встает в 1 сразу, первая функция ест-но 0, 3 - ведет себя также, как и при входящем

где-то
Код
#ifdef __cplusplus
extern "C" {
#endif
extern int UTIL_GetFlipStatus();
extern int UTIL_GetIncomingCallStatus();
extern int UTIL_GetPhoneInCall();
//extern int UTIL_GetCallConnectedStatus();
#ifdef __cplusplus
}
#endif


где-то в конструкторе
Код
isIncomingCall = UTIL_Get...;
isPhoneInCall = ...;
//isCallConnected = ...;


в обработчике таймера
Код
if(!isIncomingCall && UTIL_GetIncomingCallStatus()) {
    //printf("incoming call\n");
    saveFullscreenMode();
    isIncomingCall = true;
  }
  else if(!isPhoneInCall && UTIL_GetPhoneInCall()) {
    //printf("phone incall\n");
    if(!isIncomingCall) saveFullscreenMode();
    else isIncomingCall = false;
    isPhoneInCall = true;
  }
#if 0
  else if(!isCallConnected && UTIL_GetCallConnectedStatus()) {
    printf("connected\n");
    isCallConnected = true;
  }
#endif
  else if(!UTIL_GetIncomingCallStatus() && !UTIL_GetPhoneInCall()
        /*&& !UTIL_GetCallConnectedStatus()*/) {
    if(isIncomingCall || isPhoneInCall) {
      printf("restore from call\n");
      isIncomingCall = isPhoneInCall /*= isCallConnected*/ = false;
      restoreFullscreenMode();
    }
  }

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
работа с закрытым флипом и обработка входящего вызова, в нативном софте · Motorola ROKR E6, E6e, E6tv, MING A1200, A1200i, A1200e, A1200r, A1200w, A1600 · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.7.2025, 1:41

Форум живёт: