Здравствуйте. Пишу тут небольшое приложение, оно должно по тапу на небольшое окошко с текстом сбрасывать входящий вызов, и перезванивать на номер, с которого и был входящий вызов.
Перезванивать она должна по тапу на окно (отрисовываю поверх всех окон).
Наткнулся тут на пару подводных булыжников:
1) При входящем звонке на 5530 (на других нет возможности протестировать, в основном гоняю на N73, на нём всё отлично) моё окно перекрывает окно входящего звонка. Никто не знает почему? Своё окно отрисовываю с ECoeWinPriorityAlwaysAtFront.
2) Самое неприятное. Для отбоя звонка использую RCall, т.к. сбросить звонок надо без поднятия трубки. И с ним вот какая проблема.
Использую следующие коды:
Code:void CCaller::CallL() { __LOGSTR("CallL"); HangUp(); iFile.Open(iFs,KFileConfig,EFileRead); iText.Set(iFile); TBuf<128> buf; iText.Read(buf); iFile.Close(); CTelephony::TTelNumber number(buf); CTelephony::TCallId callid; CTelephony::TCallParamsV1 callparams; CTelephony::TCallParamsV1Pckg callparamspckg(callparams); callparams.iIdRestrict = CTelephony::ESendMyId; iTelephony->DialNewCall(iStatus,callparamspckg,number,callid); SetActive(); }Первым вызывается CallL(), которая должна вызвать HangUp(), и после этого совершить звонок. Только вот этого не происходит. Как видно, я использую макросы для логгирования происходящего, в логи падает только следующее:Code:void CCaller::HangUp() { __LOGSTR("HangUp"); TName callName; RTelServer::TPhoneInfo phoneInfo; RTelServer telServer; RLine::TLineInfo lineInfo; RPhone::TLineInfo plineInfo; RPhone phone; RLine::TCallInfo callInfo; RLine line; RCall call; __LOGSTR1("iTelServer.Connect():%d",telServer.Connect()); __LOGSTR1("iTelServer.GetPhoneInfo:%d",telServer.GetPhoneInfo(0, phoneInfo)); __LOGSTR1("iPhone.Open:%d",phone.Open(telServer, phoneInfo.iName)); __LOGSTR1("iPhone.GetLineInfo:%d",phone.GetLineInfo(0, plineInfo)); __LOGSTR1("iLine.Open:%d",line.Open(phone, plineInfo.iName)); __LOGSTR1("iLine.GetCallInfo:%d",line.GetCallInfo(0,callInfo)); __LOGSTR1("iLine.GetInfo:%d",line.GetInfo(lineInfo)); callName.Copy(lineInfo.iNameOfCallForAnswering); __LOGSTR1("iCall.OpenExistingCall:%d",call.OpenExistingCall(line, callName)); __LOGSTR1("iCall.HangUp:%d", call.HangUp() ); call.Close(); line.Close(); phone.Close(); telServer.Close(); }
И всё. После этого программа падает с KERN-EXEC 3, т.е. в HangUp не выполняется ни одной строки кода. Никак не могу понять, в чём же дело?Code:06.07.2011 21.42.07 CallL
Если не решится, придётся использовать костыль с посылкой EStdKeyNo для отбоя вызова ...


Reply With Quote



