Discussion Board

Results 1 to 11 of 11
  1. #1
    Registered User ivan.belousov's Avatar
    Join Date
    Jun 2011
    Posts
    9
    Пока единственное что нашел, чтобы вызвать номер -

    Code:
    QDesktopServices::openUrl(QUrl("tel:+777777777777"));
    Но на S^1 - если в запросе на звонок сказать - нет. Открывается браузер.

    Нет ли другого решения?

  2. #2
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Без Qt не пойдёт?
    Code:
    void CallL(const TDesC& aNumber)
        {
        CTelephony* tel = CTelephony::NewLC();
        CTelephony::TTelNumber number(aNumber);
        TRequestStatus status;
        CTelephony::TCallId callid;
        CTelephony::TCallParamsV1 callparams;
        CTelephony::TCallParamsV1Pckg callparamspckg(callparams);
        callparams.iIdRestrict = CTelephony::ESendMyId;
    
        tel->DialNewCall(status,callparamspckg,number,callid);
        User::WaitForRequest(status);
        CleanupStack::PopAndDestroy(tel);
        }

  3. #3
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Пока были актуальны Qt Mobile Extension позвонить можно было через класс XQTelephony:
    Code:
    #include <XQTelephony>
    ...
    ...
    XQTelephony* telephony = new XQTelephony(this);
    telephony->call("+9190000000000");
    Но сейчас от этих расширений отказались в пользу Qt Mobility, в котором подобный функционал отсутствует.

    Так что лучшим выходом будет смешать Qt код с Symbian C++ и совершать вызов через CTelephony.

  4. #4
    Registered User ivan.belousov's Avatar
    Join Date
    Jun 2011
    Posts
    9
    Заделал звонилку( Переделал класс из wiki) только вот проблема. После запуска звонилки приложение обратно не открывается. Не могу разобраться в чем проблема?

    Code:
     
    #ifndef MAKECALL_H
    #define MAKECALL_H
    
    #include <Etel3rdParty.h>
    // link to etel3rdparty.lib
    
    class MDialObserver
    {
        public:
            virtual void CallDialedL(TInt aError) = 0;
    };
    
    class CCallDialer : public CActive
    {
        public:
            static CCallDialer* NewL(MDialObserver& aCallBack);
            static CCallDialer* NewLC(MDialObserver& aCallBack);
            ~CCallDialer();
    
        protected:
            CCallDialer(MDialObserver& aObserver);
            void ConstructL();
    
        private:
            void RunL();
            void DoCancel();
    
        private:
            MDialObserver&                iObserver;
            CTelephony*                   iTelephony;
            CTelephony::TCallId           iCallId;
            CTelephony::TCallParamsV1     iCallParams;
            CTelephony::TCallParamsV1Pckg iCallParamsPckg;
    };
    #endif // MAKECALL_H
    Code:
    #include "MakeCall.h"
    #include <QString>
    
    CCallDialer* CCallDialer::NewL(MDialObserver& aCallBack)
    {
        CCallDialer* self = CCallDialer::NewLC(aCallBack);
        CleanupStack::Pop(self);
        return self;
    }
    
    CCallDialer* CCallDialer::NewLC(MDialObserver& aCallBack)
    {
        CCallDialer* self = new (ELeave) CCallDialer(aCallBack);
        CleanupStack::PushL(self);
        self->ConstructL();
        return self;
    }
    
    
    CCallDialer::~CCallDialer()
    {
        Cancel();
        delete iTelephony;
    }
    
    void CCallDialer::ConstructL()
    {
        iTelephony = CTelephony::NewL();
    
        QString text = "+77777777777";
        TBuf<100> buffer(text.utf16());
    
        CTelephony::TTelNumber telNumber(buffer);
    
        iCallParams.iIdRestrict = CTelephony::ESendMyId;
    
        iTelephony->DialNewCall(iStatus, iCallParamsPckg, telNumber, iCallId);
        SetActive();
    }
    
    CCallDialer::CCallDialer(MDialObserver& aObserver)
    : CActive(EPriorityNormal),iObserver(aObserver), iCallParamsPckg(iCallParams)
    {
        CActiveScheduler::Add(this);
    }
    
    void CCallDialer::RunL()
    {
        iObserver.CallDialedL(iStatus.Int());
    }
    
    void CCallDialer::DoCancel()
    {
        iTelephony->CancelAsync(CTelephony::EDialNewCallCancel);
    }
    Вызов:
    Code:
        iCallDialer = CCallDialer::NewL(*this);
    
    void MenuForm::CallDialedL(TInt aError)
    {
        delete iCallDialer, iCallDialer = NULL;
        this->setFocus();
        this->raise();
    }
    Last edited by ivan.belousov; 2011-06-27 at 11:32.

  5. #5
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Попробуйте добавить вызов this->raise(); после setFocus();

  6. #6
    Registered User ivan.belousov's Avatar
    Join Date
    Jun 2011
    Posts
    9
    Спасибо. Пример коментарием ниже поправил

  7. #7
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    Всем доброго времени суток! Пишу приложение под Symbian 9.4 на Qt, также возникла необходимость совершать звонки, вариант с "openUrl" никак не устраивает. Подскажите пожалйста, как можно это реализовать?
    Пробывал использовать класс представленный ivan.belousov, но возникает ошибка в строке
    Code:
    iCallDialer = CCallDialer::NewL(*this);
    Нет ли более простого метода?

  8. #8
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Более простого способа нет.

    А какая ошибка возникает?

  9. #9
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    Я добавил этот класс (CCallDialer), при нажатии на кнопку формы происходит следующее:

    Code:
    CCallDialer CalDial = CCallDialer::NewL(*this);
    Возникает ошибка: no matching function for call to 'CCallDialer::NewL(MainWindow&)'

    То что в CCallDIaler нет метода "NewL(MainWindow&)" я понял. Вобщем проблема в том, что я чет не соображу как теперь этот класс использовать.

    Попробывал с использованием CTelephony, подкинул библиотеку, написал код:

    Code:
    CTelephony* tel = CTelephony::NewLC();
        CTelephony::TTelNumber number(aNumber);
        TRequestStatus status;
        CTelephony::TCallId callid;
        CTelephony::TCallParamsV1 callparams;
        CTelephony::TCallParamsV1Pckg callparamspckg(callparams);
        callparams.iIdRestrict = CTelephony::ESendMyId;
    
        tel->DialNewCall(status,callparamspckg,number,callid);
        User::WaitForRequest(status);
        CleanupStack::PopAndDestroy(tel);
    Добавил Capability, вобщем скомпилировался, все нармально, запустил на 5800 - в приложении нажимаю на кнопку вызова и приложение тутже закрывается, и больше ничего не происходит....
    Last edited by Bitaxa; 2012-01-29 at 11:41. Reason: Добавил новый код

  10. #10
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    1) Воспользуйтесь лучше примером от ivan.belousov,отнаследуйте ваш класс MainWindow от MDialObserver, и реализуйте его виртуальные функции.
    2) Для отображения ошибок приложений создайте файлик C:/resource/ErrRd
    3) Есть дебаггинг же

  11. #11
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    SQR, огромное Вам спасибо! первый пункт из вашего сообщения очень помог, лепил всё что угодно, а наследоваться от от MDialObserver както и не подумал, туплю=))

Similar Threads

  1. Поиск имени по номеру
    By Alekzandr in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 7
    Last Post: 2010-02-11, 16:14
  2. Несколько вопросов по Symbian 9.x
    By yrok_x in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 5
    Last Post: 2010-02-08, 09:33
  3. Вопрос по CEikRichTextEditor
    By Mutronics in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 1
    Last Post: 2010-02-07, 20:53
  4. Вопрос по Carbide C++
    By Clever brain in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 15
    Last Post: 2009-03-02, 18:36

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved