Управление индикатором сигнала

Индикатор сигнала - один из элементов панели статуса, расположенный в левой части экрана. Этот индикатор может отображать восемь уровней сигнала, называемыхLevel 0, Level 1 и т.д. доLevel 7.



Рис 1. - Восемь состояний индикатора сигнала

ВSymbian 2-й редакции, существует класс позволяющий пользователю контролировать состояние этого индикатора. Он находится в библиотекеaknnotify.lib и называетсяCAknSignalNotify.

Помимо прочего,CAknSignalNotify может быть использован для изменения состояний GPRS соединения.



Рис 2. - Состояния GPRS соединения

CAknSignalNotify содержит следующие функции:

  • void SetSignalLevelL(TInt aLevel) - установка состояния индикатора. Аргумент aLevel может принимать значения от 0 до 7.
  • void SetGprsStateL() - установка состояния GPRS соединения.
  • void SetWcdmaStateL() - установка состояния WCDMA.
  • void SetCdmaStateL() - установка состояния CDMA.
  • void SetCommonPacketDataStateL() - установка состояния Common Packet Data.

Примечание: реализация функций SetWcdmaStateL(), SetCdmaStateL() и SetCommonPacketDataStateL() может отсутствовать на GSM телефонах. В этом случае попытка обращения к ним приведет к завершению работы приложения без сообщения об ошибке.

AknSignalNotify.h

#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, сохраняются до тех пор, пока его состояние не изменит система, или другой экземпляр 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() может принимать любое значение, но какой-либо эффект на индикатор оказывают следующие:

  1. Под линейкой уровня сигнала отображается антенна.
  2. Отображается символ G (GPRS attached).
  3. Мерцающий символ G.
  4. G в квадратике (GPRS Context).
  5. Зачеркнутое G (GPRS Suspended).
  6. G в квадратике подчеркнутое один раз.

Здесь вы можете скачать демонстрационным пример.

Управление индикатором заряда батареи

Индикатор заряда батареи - один из элементов панели статуса, расположенный в правой части экрана. Этот индикатор может отображать восемь уровней заряда батареи, называемыхLevel 0, Level 1 и т.д. доLevel 7. Во время подзарядки батареи с помощью зарядного устройства, индикатор постоянно меняется, пробегая все значения от разряженного до полностью заряженного. Индикатор может принимать восемь различных состояний.



Рис. 3 - Восемь состояний индикатора заряда батареи

ВSymbian 2-й редакции, существует класс позволяющий пользователю контролировать состояние этого индикатора. Он также находится в библиотекеaknnotify.lib и называетсяCAknBatteryNotify.

CAknBatteryNotify содержит следующие функции:

  • void StartChargingL() - индикатор начинает пробегать все свои возможные состояния, как при зарядке батареи.
  • void StopChargingL() - индикатор прекращает изменять свое состояние, последнее состояние индикатора становится его текущим состоянием.
  • void NotChargingL() - индикатор прекращает изменять свое состояние, Level 0 становится его текущим состоянием.
  • void SetBatteryLevelL(TInt aLevel) - установка состояния индикатора. Аргумент aLevel может принимать значения от 0 до 7.

AknBatteryNotify.h

#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, сохраняются до тех пор, пока его состояние не изменит система, или другой экземпляр 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
};

Здесь вы можете скачать демонстрационным пример.

Управление индикатором вызова

Индикатор вызова - иконка (иногда мерцающая, см. рис.), появляющаяся в правом верхнем углу экрана в том случае, если телефон не может отобразить полноценное окно вызова.



Рис 4. - Различные индикаторы вызова

Во 2-й редакцииSymbian вы можете отобразить или скрыть этот индикатор, не зависимо от того, имеется ли входящий звонок или нет. Для этого вы должны воспользоваться классомCAknIncallBubble изaknnotify.lib. Заголовок для этого класса в SDK не включен, но используемое им перечисление TAvkonIncallStatusBubbleFlags доступно в avkon.hrh, а сам класс по структуре очень прост и полностью соответствуетCAknPopupNotify, так что воссоздать его заголовочный файл не составляет большого труда.

Файл AknIncallBubble.h

// 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();
 
};

Использование CAknIncallBubble

Подключите AknIncallBubble.h к своему проекту, и используйте следующий код:

CAknIncallBubble* IncallBubble = CAknIncallBubble::NewLC();
IncallBubble->->SetIncallBubbleFlagsL(EAknStatusBubbleVisible | EAknStatusBubbleAlerting);
CleanupStack::PopAndDestroy(IncallBubble);

Демонстрационный проект



Рис 5. - Демонстрационный проект

Здесь находится демонстрационный проект, позволяющий поэксперементировать с различными флагами CAknIncallBubble.


Автор:TR"]F




Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна