×

Discussion Board

Results 1 to 15 of 26

Hybrid View

  1. #1
    Nokia Developer Expert
    Join Date
    Dec 2006
    Location
    Mountain View, CA
    Posts
    197

    Loudspeaker control for an active GSM call for S60 3.1 devices

    There is known issue with loudspeaker control during an active circuit switched call. Developers are unable to set the active call to be in loudspeaker mode in S60 3.1 devices. Forum Nokia will publish a Symbian Signed loudspeaker API wrapper which will solve this issue. The implementation delivery estimate is beginning of December 2007.

  2. #2
    Regular Contributor
    Join Date
    Jun 2003
    Posts
    84

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Hi,

    What is the api to activate the loudspeaker during an active call for S60 3rd MR ?
    Or better, can you help with a demo code ?
    I understand this api (for MR) is no more working for S60 3rd FP1 ?

    Thank you
    tek

  3. #3
    Registered User
    Join Date
    Mar 2007
    Posts
    3

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    It is possible to activate the loudspeaker during a call by using the APS Server's ActivateLoudspeaker function.

    This requires downloading the APS version for your platform(FP1 or MR) and needs MultimediaDD capability. See http://wiki.forum.nokia.com/index.ph...o_Proxy_Server

    I am very interested as well if there is another API that allows doing this
    i.e. Activate the loudspeaker during an active GSM call.

  4. #4
    Nokia Developer Expert
    Join Date
    Dec 2006
    Location
    Mountain View, CA
    Posts
    197

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    APS has a "positive" known issue: not only you can put the VoIP call to loudspeaker mode but it works also for circuit switched call in S60 3.0 devices.

    However, it does not allow you to control audio routing for Circuit Switched call in S60 3.1 devices (e.g. N95). Therefore S60 Multimedia team in Dallas has created a "Loudspeaker API wrapper" which Forum Nokia makes available for Symbian C++ developers. Latest estimate is that Forum Nokia will get the initial release during week 51.

    If you are interested and to be the first ones to try, please register to e-Store, buy a Private API voucher (approx 200usd) from e-store and submit a request.

  5. #5
    Nokia Developer Expert
    Join Date
    Dec 2006
    Location
    Mountain View, CA
    Posts
    197

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    This private API wrapper is now available for beta testers. Please submit a private API request (register to Forum Nokia e-store, buy a private API case, submit the request) and ask for CallAudioControl in order to control audio routing during active cellular call.

    Initial release notes:

    Interface for controlling call audio
    * This class provides interface for controlling a) audio routing to various connected output devices. b) speaker volume. c) microphone gain.
    * This interface can be used to control active Circuit Switching call, Video Telephony call and Nokia internal VoIP calls.

    Limitations:
    * 1. This inteface can only be used on Nokia devices running S60 3.1 OR 3.2 platform.
    * 2. Clients are requried to have MultimediaDD and WriteDeviceData capability to use some of the functions defined in this interface. Check individual function documentation for more information.
    * 3. Some of the functions (routing, volume, and gain control) defined in this interface can only be used during an active Circuit Switching OR Video Telephony OR Nokia internal VoIP call.
    * If those functions are used when there is no active call, they return KErrPermissionDenied. Check individual function documentation for more information.
    * 4. This API does not control 3rd party VoIP call created via APS or VoIP Audio Services API.
    * 5. When connected accessory list changes, initial routing happens automatically.
    [B]Forum Nokia Americas[/B]
    Forum Nokia provides a wealth of resources to mobile developers. To be informed about the latest on mobile tools, devices and technologies, register [B][URL="http://www.forum.nokia.com/main/registration/registration.html"]here[/URL][/B]

  6. #6
    Nokia Developer Expert
    Join Date
    Dec 2006
    Location
    Mountain View, CA
    Posts
    197

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Clarification:

    You should be able to control the audio routing for Circuit Switched and VoIP calls using APS ("positive bug") for all S60 3.0 devices.

    For S60 3.1 devices the APS controls only VoIP audio routing and CallAudioControl API (private API wrapper) is needed for CS audio routing.
    [B]Forum Nokia Americas[/B]
    Forum Nokia provides a wealth of resources to mobile developers. To be informed about the latest on mobile tools, devices and technologies, register [B][URL="http://www.forum.nokia.com/main/registration/registration.html"]here[/URL][/B]

  7. #7
    Regular Contributor
    Join Date
    Jun 2003
    Posts
    84

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Here my contribute back to forum with my solution for activating the loudspeaker without to require the APS, VoIP Audio services or MultimediaDD. Solution for MR + FP1 and semi-solution for FP2. All APIs are in the plugins.

    For MR:
    -----------------------------------------
    // LoudspeakerControlMR.h file

    #ifndef LOUDSPEAKERCONTROLMR_H
    #define LOUDSPEAKERCONTROLMR_H

    #include <e32base.h>
    #include <e32std.h>

    #include <DosSvrServices.h>
    #include "MLoudspeakerControl.h"

    /**
    * CLoudspeakerControlMR
    * Loudspeaker control for S60 MR/3.0
    * Use via MLoudspeakerControl interface.
    * Implement it in a single .dll with only one exported function
    * which creates and returns an object of type: MLoudspeakerControl
    * Uses DOS services from SharedData S60 plug-in
    */

    /*
    * Capabilities required: ReadUserData WriteUserData ReadDeviceData WriteDeviceData
    */

    // function exported at ordinal 1 in dll
    IMPORT_C MLoudspeakerControl * CreateLoudspeakerControlMR_L();

    // CLoudspeakerControlMR does not export any method
    class CLoudspeakerControlMR : public MLoudspeakerControl
    {
    public:

    static CLoudspeakerControlMR* NewL();
    static CLoudspeakerControlMR* NewLC();
    virtual ~CLoudspeakerControlMR();

    private:

    CLoudspeakerControlMR();
    void ConstructL();

    public:

    // from MLoudspeakerControl
    TInt ActivateLoudspeaker(TBool aActivate);
    TInt IsLoudspeakerActive(TBool& aIsActive);

    protected:

    RDosServer iDosServer; // dos server - domestic os
    RDosAudio iDosAudio; // dos audio services

    };

    #endif

    // .cpp file

    #include "LoudspeakerControlMR.h"

    // export method at ordinal 1 in dll
    EXPORT_C MLoudspeakerControl * CreateLoudspeakerControlMR_L()
    {
    CLoudspeakerControlMR * aLspkCMR = CLoudspeakerControlMR::NewL();
    return aLspkCMR;
    }

    CLoudspeakerControlMR::CLoudspeakerControlMR()
    {
    }

    CLoudspeakerControlMR::~CLoudspeakerControlMR()
    {
    iDosAudio.Close();
    iDosServer.Close();
    }

    CLoudspeakerControlMR* CLoudspeakerControlMR::NewLC()
    {
    CLoudspeakerControlMR* self = new (ELeave)CLoudspeakerControlMR();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

    CLoudspeakerControlMR* CLoudspeakerControlMR::NewL()
    {
    CLoudspeakerControlMR* self=CLoudspeakerControlMR::NewLC();
    CleanupStack::Pop(); // self;
    return self;
    }

    void CLoudspeakerControlMR::ConstructL()
    {
    User::LeaveIfError(iDosServer.Connect());
    User::LeaveIfError(iDosAudio.Open(iDosServer));
    }

    TInt CLoudspeakerControlMR::ActivateLoudspeaker(TBool aActivate)
    {
    TInt aRet = KErrGeneral;

    // default Off/deactivated
    EPSHandsFreeMode aLoudSpkMode = EPSIhfOff;

    // switch on/active if required
    if(aActivate)
    aLoudSpkMode = EPSIhfOn;

    // set the loudspeaker mode
    aRet = iDosAudio.SetHandsfreeMode(aLoudSpkMode);

    /* seems not a good solution for telephony - on MR the phone updates the menu options
    but not the internal state of the audio loudspeaker.
    // if we succeeded, update the according Publish&Subscribe key
    // see: SharedData/include
    // see: TelephonyInternalPSKeys.h
    // this prop must be update so that the Telephony app is updated too
    // and will show Activate Loudspk. or Activate Handset correctly
    if(aRet == KErrNone)
    {
    TInt aKeyVal = EPSTelephonyIhfOff;
    if(aActivate)
    aKeyVal = EPSTelephonyIhfOn;
    TInt aProSetRes = RProperty::Set(KPSUidTelephonyAudio,(TUint)KTelephonyIhfMode,aKeyVal);
    }
    */

    return aRet;
    }

    TInt CLoudspeakerControlMR::IsLoudspeakerActive(TBool& aIsActive)
    {
    EPSHandsFreeMode aLoudSpkMode = EPSIhfOff;
    TInt aRet = iDosAudio.GetHandsfreeMode(aLoudSpkMode);

    // check if we got correct value for the speaker mode
    if(aRet == KErrNone)
    {
    // got the loudspeaker mode
    // update the argument
    aIsActive = (aLoudSpkMode == EPSIhfOn);
    }

    return aRet;
    }


    // for FP1
    ---------
    /*
    * Capabilities required: ReadUserData WriteUserData ReadDeviceData WriteDeviceData
    */
    // .h file

    #ifndef LOUDSPEAKERCONTROLFP1_H
    #define LOUDSPEAKERCONTROLFP1_H

    #include <e32base.h>
    #include <e32std.h>
    #include <e32property.h>

    #include <TelephonyInternalPSKeys.h>
    #include "MLoudspeakerControl.h"

    /**
    * CLoudspeakerControlFP1
    * Loudspeaker control for FP1
    * see: SharedData/include
    * see: TelephonyInternalPSKeys.h
    */

    class CLoudspeakerControlFP1 : public MLoudspeakerControl
    {

    public:

    static CLoudspeakerControlFP1* NewL();
    static CLoudspeakerControlFP1* NewLC();
    virtual ~CLoudspeakerControlFP1();

    private:

    CLoudspeakerControlFP1();
    void ConstructL();

    public:

    // from MLoudspeakerControl
    TInt ActivateLoudspeaker(TBool aActivate);
    TInt IsLoudspeakerActive(TBool& aIsActive);

    protected:

    TUid iCat;
    TUint iKey;
    };

    #endif

    // .cpp file

    #include "LoudspeakerControlFP1.h"

    CLoudspeakerControlFP1::CLoudspeakerControlFP1()
    {
    // see: SharedData/include
    // see: TelephonyInternalPSKeys.h
    iCat = KTelephonyAudioOutput;
    iKey = (TUint)KTelephonyAudioOutputPreference;
    }

    CLoudspeakerControlFP1::~CLoudspeakerControlFP1()
    {
    }

    CLoudspeakerControlFP1* CLoudspeakerControlFP1::NewLC()
    {
    CLoudspeakerControlFP1* self = new (ELeave)CLoudspeakerControlFP1();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

    CLoudspeakerControlFP1* CLoudspeakerControlFP1::NewL()
    {
    CLoudspeakerControlFP1* self=CLoudspeakerControlFP1::NewLC();
    CleanupStack::Pop(); // self;
    return self;
    }

    void CLoudspeakerControlFP1::ConstructL()
    {
    }

    TInt CLoudspeakerControlFP1::ActivateLoudspeaker(TBool aActivate)
    {
    // if the property is set/unset, the Loudspeaker is turned on/off
    // and also the built in Telephone app will be notified so that
    // it will show correct options; this valid for S60 FP1/3.1
    /*EPSTelephonyAudioOutput*/TInt aValue = EPSPrivate;
    if(aActivate)
    aValue = EPSPublic;
    return RProperty::Set(iCat,iKey,aValue);
    }

    TInt CLoudspeakerControlFP1::IsLoudspeakerActive(TBool& aIsActive)
    {
    /*EPSTelephonyAudioOutput*/TInt aValue = EPSPrivate;
    TInt aRet = RProperty::Get(iCat,iKey,aValue);
    if(aRet == KErrNone)
    {
    // got the loudspeaker mode
    // update the argument
    aIsActive = (aValue == EPSPublic);
    }

    return aRet;
    }

    // interface MLoudspeakerControl.h

    #ifndef MLOUDSPEAKERCONTROL_H
    #define MLOUDSPEAKERCONTROL_H

    class MLoudspeakerControl : public CBase
    {

    public:

    MLoudspeakerControl() {};
    virtual ~MLoudspeakerControl() {};

    public:

    // sets Loudspeaker as active or inactive;
    // returns KErrNone if the operation/method was succesfully performed
    virtual TInt ActivateLoudspeaker(TBool aActivate) = 0;

    // gets the loudspeaker state active/inactive in the argument aIsActive
    // returns KErrNone if the operation/method was succesfully performed
    virtual TInt IsLoudspeakerActive(TBool& aIsActive) = 0;

    };

    #endif

    For FP2 is a must to use the VoIP Audio Services plugin which requires MultimediaDD or, you can simulate right soft key press while the call is connected if you are comfortable with this.

    Best
    tek

  8. #8
    Regular Contributor
    Join Date
    Jun 2003
    Posts
    84

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    correction in my previous post: replace "VoIP Audio Services" with "Call Audio Control" plugin

  9. #9
    Nokia Developer Expert
    Join Date
    Dec 2006
    Location
    Mountain View, CA
    Posts
    197

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    I got thrown off by the title, which references 3.1 devices and this proposal is for 3.0 devices.
    Looks like you are talking to DOS (Domesting Operating Server) interface directly for 3.0 devices.

    This approach is interesting, but there is a risk unstability. When routing changes are made outside adaptations' path talking to DOS directly... it may put Adaptation into 'Out of Sync' situations and could result in unrecoverable where the user has to reboot the phone....

  10. #10
    Regular Contributor
    Join Date
    Jun 2003
    Posts
    84

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Hi,

    I dont know what is Adaptation but I can say:
    - I have written the code using the plugins and works on MR and FP1 devices. You must build 2 separate dlls using the respective classes.
    - I have done full tests on the devices: Nokia 5500, N73, E61i, E70, N95, 6110, N80
    - the application is in use at many users since several months and nobody complained the phone crashed while activating the loudspeaker in an active call.
    Of course it might be some inconsistency in use on some phones it but I dont know.

    Regards,
    tek

  11. #11
    Registered User
    Join Date
    Dec 2009
    Posts
    47

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Quote Originally Posted by tektronic View Post
    Here my contribute back to forum with my solution for activating the loudspeaker without to require the APS, VoIP Audio services or MultimediaDD. Solution for MR + FP1 and semi-solution for FP2. All APIs are in the plugins.

    For MR:
    -----------------------------------------
    // LoudspeakerControlMR.h file

    #ifndef LOUDSPEAKERCONTROLMR_H
    #define LOUDSPEAKERCONTROLMR_H

    #include <e32base.h>
    #include <e32std.h>

    #include <DosSvrServices.h>
    #include "MLoudspeakerControl.h"

    /**
    * CLoudspeakerControlMR
    * Loudspeaker control for S60 MR/3.0
    * Use via MLoudspeakerControl interface.
    * Implement it in a single .dll with only one exported function
    * which creates and returns an object of type: MLoudspeakerControl
    * Uses DOS services from SharedData S60 plug-in
    */

    /*
    * Capabilities required: ReadUserData WriteUserData ReadDeviceData WriteDeviceData
    */

    // function exported at ordinal 1 in dll
    IMPORT_C MLoudspeakerControl * CreateLoudspeakerControlMR_L();

    // CLoudspeakerControlMR does not export any method
    class CLoudspeakerControlMR : public MLoudspeakerControl
    {
    public:

    static CLoudspeakerControlMR* NewL();
    static CLoudspeakerControlMR* NewLC();
    virtual ~CLoudspeakerControlMR();

    private:

    CLoudspeakerControlMR();
    void ConstructL();

    public:

    // from MLoudspeakerControl
    TInt ActivateLoudspeaker(TBool aActivate);
    TInt IsLoudspeakerActive(TBool& aIsActive);

    protected:

    RDosServer iDosServer; // dos server - domestic os
    RDosAudio iDosAudio; // dos audio services

    };

    #endif

    // .cpp file

    #include "LoudspeakerControlMR.h"

    // export method at ordinal 1 in dll
    EXPORT_C MLoudspeakerControl * CreateLoudspeakerControlMR_L()
    {
    CLoudspeakerControlMR * aLspkCMR = CLoudspeakerControlMR::NewL();
    return aLspkCMR;
    }

    CLoudspeakerControlMR::CLoudspeakerControlMR()
    {
    }

    CLoudspeakerControlMR::~CLoudspeakerControlMR()
    {
    iDosAudio.Close();
    iDosServer.Close();
    }

    CLoudspeakerControlMR* CLoudspeakerControlMR::NewLC()
    {
    CLoudspeakerControlMR* self = new (ELeave)CLoudspeakerControlMR();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

    CLoudspeakerControlMR* CLoudspeakerControlMR::NewL()
    {
    CLoudspeakerControlMR* self=CLoudspeakerControlMR::NewLC();
    CleanupStack::Pop(); // self;
    return self;
    }

    void CLoudspeakerControlMR::ConstructL()
    {
    User::LeaveIfError(iDosServer.Connect());
    User::LeaveIfError(iDosAudio.Open(iDosServer));
    }

    TInt CLoudspeakerControlMR::ActivateLoudspeaker(TBool aActivate)
    {
    TInt aRet = KErrGeneral;

    // default Off/deactivated
    EPSHandsFreeMode aLoudSpkMode = EPSIhfOff;

    // switch on/active if required
    if(aActivate)
    aLoudSpkMode = EPSIhfOn;

    // set the loudspeaker mode
    aRet = iDosAudio.SetHandsfreeMode(aLoudSpkMode);

    /* seems not a good solution for telephony - on MR the phone updates the menu options
    but not the internal state of the audio loudspeaker.
    // if we succeeded, update the according Publish&Subscribe key
    // see: SharedData/include
    // see: TelephonyInternalPSKeys.h
    // this prop must be update so that the Telephony app is updated too
    // and will show Activate Loudspk. or Activate Handset correctly
    if(aRet == KErrNone)
    {
    TInt aKeyVal = EPSTelephonyIhfOff;
    if(aActivate)
    aKeyVal = EPSTelephonyIhfOn;
    TInt aProSetRes = RProperty::Set(KPSUidTelephonyAudio,(TUint)KTelephonyIhfMode,aKeyVal);
    }
    */

    return aRet;
    }

    TInt CLoudspeakerControlMR::IsLoudspeakerActive(TBool& aIsActive)
    {
    EPSHandsFreeMode aLoudSpkMode = EPSIhfOff;
    TInt aRet = iDosAudio.GetHandsfreeMode(aLoudSpkMode);

    // check if we got correct value for the speaker mode
    if(aRet == KErrNone)
    {
    // got the loudspeaker mode
    // update the argument
    aIsActive = (aLoudSpkMode == EPSIhfOn);
    }

    return aRet;
    }


    // for FP1
    ---------
    /*
    * Capabilities required: ReadUserData WriteUserData ReadDeviceData WriteDeviceData
    */
    // .h file

    #ifndef LOUDSPEAKERCONTROLFP1_H
    #define LOUDSPEAKERCONTROLFP1_H

    #include <e32base.h>
    #include <e32std.h>
    #include <e32property.h>

    #include <TelephonyInternalPSKeys.h>
    #include "MLoudspeakerControl.h"

    /**
    * CLoudspeakerControlFP1
    * Loudspeaker control for FP1
    * see: SharedData/include
    * see: TelephonyInternalPSKeys.h
    */

    class CLoudspeakerControlFP1 : public MLoudspeakerControl
    {

    public:

    static CLoudspeakerControlFP1* NewL();
    static CLoudspeakerControlFP1* NewLC();
    virtual ~CLoudspeakerControlFP1();

    private:

    CLoudspeakerControlFP1();
    void ConstructL();

    public:

    // from MLoudspeakerControl
    TInt ActivateLoudspeaker(TBool aActivate);
    TInt IsLoudspeakerActive(TBool& aIsActive);

    protected:

    TUid iCat;
    TUint iKey;
    };

    #endif

    // .cpp file

    #include "LoudspeakerControlFP1.h"

    CLoudspeakerControlFP1::CLoudspeakerControlFP1()
    {
    // see: SharedData/include
    // see: TelephonyInternalPSKeys.h
    iCat = KTelephonyAudioOutput;
    iKey = (TUint)KTelephonyAudioOutputPreference;
    }

    CLoudspeakerControlFP1::~CLoudspeakerControlFP1()
    {
    }

    CLoudspeakerControlFP1* CLoudspeakerControlFP1::NewLC()
    {
    CLoudspeakerControlFP1* self = new (ELeave)CLoudspeakerControlFP1();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

    CLoudspeakerControlFP1* CLoudspeakerControlFP1::NewL()
    {
    CLoudspeakerControlFP1* self=CLoudspeakerControlFP1::NewLC();
    CleanupStack::Pop(); // self;
    return self;
    }

    void CLoudspeakerControlFP1::ConstructL()
    {
    }

    TInt CLoudspeakerControlFP1::ActivateLoudspeaker(TBool aActivate)
    {
    // if the property is set/unset, the Loudspeaker is turned on/off
    // and also the built in Telephone app will be notified so that
    // it will show correct options; this valid for S60 FP1/3.1
    /*EPSTelephonyAudioOutput*/TInt aValue = EPSPrivate;
    if(aActivate)
    aValue = EPSPublic;
    return RProperty::Set(iCat,iKey,aValue);
    }

    TInt CLoudspeakerControlFP1::IsLoudspeakerActive(TBool& aIsActive)
    {
    /*EPSTelephonyAudioOutput*/TInt aValue = EPSPrivate;
    TInt aRet = RProperty::Get(iCat,iKey,aValue);
    if(aRet == KErrNone)
    {
    // got the loudspeaker mode
    // update the argument
    aIsActive = (aValue == EPSPublic);
    }

    return aRet;
    }

    // interface MLoudspeakerControl.h

    #ifndef MLOUDSPEAKERCONTROL_H
    #define MLOUDSPEAKERCONTROL_H

    class MLoudspeakerControl : public CBase
    {

    public:

    MLoudspeakerControl() {};
    virtual ~MLoudspeakerControl() {};

    public:

    // sets Loudspeaker as active or inactive;
    // returns KErrNone if the operation/method was succesfully performed
    virtual TInt ActivateLoudspeaker(TBool aActivate) = 0;

    // gets the loudspeaker state active/inactive in the argument aIsActive
    // returns KErrNone if the operation/method was succesfully performed
    virtual TInt IsLoudspeakerActive(TBool& aIsActive) = 0;

    };

    #endif

    For FP2 is a must to use the VoIP Audio Services plugin which requires MultimediaDD or, you can simulate right soft key press while the call is connected if you are comfortable with this.

    Best
    tek
    hi tek, thank you for your contribute.
    I wish to know where is pointer to MLoudspeakerControl.h ?

    thank you very much.

  12. #12
    Registered User
    Join Date
    Jun 2010
    Posts
    9

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    The call audio control plug-in includes one example – CallAudioControlUi provided by Nokia.
    I test it and find one case: SMS app panic for “ViewSrv 11” when trying to create new SMS after switch to loudspeaker.
    Steps:
    1. Open Nokia example CallAudioControlUi
    2. Place a voice call out in native standby view
    3. After call connects, switch to loudspeaker using CallAudioControlUi (menu TAR Options -> Set Audio O/p -> Loud Speaker)
    4. Open SMS app, New message
    Result:
    SMS app freezes. Panic for “ViewSrv 11” after a few seconds.
    Test Handset:
    E72i and E73

    From the Nokia known issue on call audio control plug-in; http://wiki.forum.nokia.com/index.ph...llAudioControl
    Following issues can be observed when using CallAudioControl API on 3.1 device:
    1) Muting and unmuting uplink doesn't work - returns error
    2) Notification about uplink mute state doesn't work
    3) Notification about output routing change doesn't work
    4) Calling SetOutput(ELoudspeaker) breaks op! eration of CPeriodic objects with Idle priority
    5) Calling SetOutput(ELoudspeaker) breaks operation of some CActive based objects (e.g. CLogViewRecent)

    Is the reason that Calling SetOutput(ELoudspeaker) breaks operation of some lower priority CActive based objects?
    Can any expect give suggestion about it?

  13. #13
    Registered User
    Join Date
    Dec 2009
    Posts
    47

    Re: Loudspeaker control for an active GSM call for S60 3.1 devices

    Hi,

    I'm using Call Audio Control Ui to get loudspeaker output.
    I read the read me files and install the Call Audio Control Ui as the read me said.
    while building the the project, the consule return an error.
    the symbol of CCallAudioContol (CallAudioControl) was undefined.
    Could any one tell me what is possible wrong ?

    Thank you very much.

Similar Threads

  1. Replies: 48
    Last Post: 2010-10-05, 07:03
  2. Busy, dropped call GSM network error detection
    By Symbian_Programmer in forum Symbian Networking & Messaging (Closed)
    Replies: 1
    Last Post: 2008-10-24, 11:08
  3. Replies: 4
    Last Post: 2007-07-20, 13:50
  4. How to get control to my aap after disconnecting a call
    By alokkumarsingh in forum Symbian Networking & Messaging (Closed)
    Replies: 9
    Last Post: 2004-06-17, 06:29

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •