Индикатор сигнала - один из элементов панели статуса, расположенный в левой части экрана. Этот индикатор может отображать восемь уровней сигнала, называемых Level 0, Level 1 и т.д. до Level 7.
В Symbian 2-й редакции, существует класс позволяющий пользователю контролировать состояние этого индикатора. Он находится в библиотеке aknnotify.lib и называется CAknSignalNotify.
Помимо прочего, CAknSignalNotify может быть использован для изменения состояний GPRS соединения.
CAknSignalNotify содержит следующие функции:
Примечание: реализация функций SetWcdmaStateL(), SetCdmaStateL() и SetCommonPacketDataStateL() может отсутствовать на GSM телефонах. В этом случае попытка обращения к ним приведет к завершению работы приложения без сообщения об ошибке.
#include <AknNotify.h>
class CAknSignalNotify : public CAknNotifyBase
{
public:
IMPORT_C static CAknSignalNotify* NewL();
IMPORT_C static CAknSignalNotify* NewLC();
IMPORT_C ~CAknSignalNotify();
IMPORT_C void SetGprsStateL(TInt aState);
IMPORT_C void SetSignalLevelL(TInt aLevel);
IMPORT_C void SetCommonPacketDataStateL(TInt aState);
IMPORT_C void SetWcdmaStateL(TInt aState);
IMPORT_C void SetCdmaStateL(TInt aState);
private:
CAknSignalNotify();
void ConstructL();
private:
IMPORT_C void CAknNotifyBase_Reserved();
};
Изменения индикатора, вызванные экземпляром класса CAknSignalNotify, сохраняются до тех пор, пока его состояние не изменит система, или другой экземпляр CAknSignalNotify. Поэтому, его можно удалить сразу после использования. К примеру: следующий код установит индикатор сигнала в максимальное состояние (Level 7). Не забудьте подключить библиотеку aknnotify.lib к вашему проекту.
CAknSignalNotify* AknSignalNotify= CAknSignalNotify::NewLC();
AknSignalNotify->SetSignalLevelL(7);
CleanupStack::PopAndDestroy();
Примечание: вы можете объявить перечисление для использования в SetBatteryLevelL():
enum TSignalLevel
{
ELevel0,
ELevel1,
ELevel2,
ELevel3,
ELevel4,
ELevel5,
ELevel6,
ELevel7
};
Аргумент функции SetGprsStateL() может принимать любое значение, но какой-либо эффект на индикатор оказывают следующие:
Здесь вы можете скачать демонстрационным пример.
Индикатор заряда батареи - один из элементов панели статуса, расположенный в правой части экрана. Этот индикатор может отображать восемь уровней заряда батареи, называемых Level 0, Level 1 и т.д. до Level 7. Во время подзарядки батареи с помощью зарядного устройства, индикатор постоянно меняется, пробегая все значения от разряженного до полностью заряженного. Индикатор может принимать восемь различных состояний.
В Symbian 2-й редакции, существует класс позволяющий пользователю контролировать состояние этого индикатора. Он также находится в библиотеке aknnotify.lib и называется CAknBatteryNotify.
CAknBatteryNotify содержит следующие функции:
#include <AknNotify.h>
class CAknBatteryNotify : public CAknNotifyBase
{
public:
IMPORT_C static CAknBatteryNotify* NewL();
IMPORT_C static CAknBatteryNotify* NewLC();
IMPORT_C ~CAknBatteryNotify();
IMPORT_C void NotChargingL();
IMPORT_C void SetBatteryLevelL(TInt aLevel);
IMPORT_C void StartChargingL();
IMPORT_C void StopChargingL();
private:
CAknBatteryNotify();
void ConstructL();
private:
IMPORT_C void CAknNotifyBase_Reserved();
};
Изменения индикатора, вызванные экземпляром класса CAknBatteryNotify, сохраняются до тех пор, пока его состояние не изменит система, или другой экземпляр CAknBatteryNotify. Поэтому, его можно удалить сразу после использования. К примеру: следующий код установит индикатор в полностью заряженное состояние (Level 7). Не забудьте подключить библиотеку aknnotify.lib к вашему проекту.
CAknBatteryNotify* AknBatteryNotify = CAknBatteryNotify::NewLC();
AknBatteryNotify->SetBatteryLevelL( 7 );
CleanupStack::PopAndDestroy();
Примечание: вы можете объявить перечисление для использования в SetBatteryLevelL():
enum TBatteryLevel
{
ELevel0,
ELevel1,
ELevel2,
ELevel3,
ELevel4,
ELevel5,
ELevel6,
ELevel7
};
Здесь вы можете скачать демонстрационным пример.
Во 2-й редакции Symbian вы можете отобразить или скрыть этот индикатор, не зависимо от того, имеется ли входящий звонок или нет. Для этого вы должны воспользоваться классом CAknIncallBubble из aknnotify.lib. Заголовок для этого класса в SDK не включен, но используемое им перечисление TAvkonIncallStatusBubbleFlags доступно в avkon.hrh, а сам класс по структуре очень прост и полностью соответствует CAknPopupNotify, так что воссоздать его заголовочный файл не составляет большого труда.
// INCLUDES
#include <e32std.h>
#include <e32base.h>
#include <AknNotify.h>
/* CAknIncallBubble flags
* Bit Explanation
* 0 and 1 Call state
* 2 No Ciphering
* 3 Is muted
* 4 Is Visible
* 5 Is a Fax
* 6 Is a Data call
* 7 Is a Hscsd data call
* 8 Line 2 indication
* 9 Is a Video call
* 10 Is an emergency call
*/
/* Следующее перечисление можно найти в avkon.hrh:
enum TAvkonIncallStatusBubbleFlags
{
EAknStatusBubbleAlerting = 0x00, // One of
EAknStatusBubbleActive = 0x01, // these
EAknStatusBubbleOnHold = 0x02, // to set
EAknStatusBubbleDisconnected = 0x03, // the call state
EAknStatusBubbleNoCiphering = 0x04,
EAknStatusBubbleMuted = 0x08,
EAknStatusBubbleVisible = 0x10,
EAknStatusBubbleFax = 0x20,
EAknStatusBubbleData = 0x40,
EAknStatusBubbleDataHscsd = 0x80,
EAknStatusBubbleLine2 = 0x100,
EAknStatusBubbleVideo = 0x200,
EAknStatusBubbleEmergency = 0x400
};
*/
// CLASS DECLARATION
/**
* CAknIncallBubble
*
*/
class CAknIncallBubble : public CBase
{
public: // Constructors and destructor
IMPORT_C static CAknIncallBubble* NewL();
IMPORT_C static CAknIncallBubble* NewLC();
IMPORT_C ~CAknIncallBubble();
IMPORT_C void SetIncallBubbleFlagsL(int aMessage);
private:
CAknIncallBubble();
void ConstructL();
IMPORT_C void CAknNotifyBase_Reserved();
};
Подключите AknIncallBubble.h к своему проекту, и используйте следующий код:
CAknIncallBubble* IncallBubble = CAknIncallBubble::NewLC();
IncallBubble->->SetIncallBubbleFlagsL(EAknStatusBubbleVisible | EAknStatusBubbleAlerting);
CleanupStack::PopAndDestroy(IncallBubble);
Автор: TR"]F
На главную SpbMap