×
Namespaces

Variants
Actions

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

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Пример кода
Исходный файл: Media:SignalIndicator src.zip

Статья
Автор: truf (04 Jan 2008)
Последнее редактирование: hamishwillee (10 Nov 2011)
== Индикатор сигнала ==

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

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


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

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

Signal2.GIF
Рис 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 в квадратике подчеркнутое один раз.

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

This page was last modified on 10 November 2011, at 06:13.
42 page views in the last 30 days.