MobiLab.ru - программирование для сотовых телефонов и КПК: Symbian C++ и OPL; J2ME, Mobile Basic, MIDlet Pascal, Windows CE, Linux. Есть форум и раздел о безопасности.
В избранное Сделать домашней Контакт
Меню
Главная
Новости
Документация
  - J2ME
  - Android
  - Symbian C++
  - Symbian OPL
  - Basic
  - Windows CE 
  - Linux
  - OpenGL ES
Безопасность
Книги
Софт
Проекты
Форум
Ссылки
Контакт

Книги


Заказать

Программирование мобильных телефонов на JAVA 2 ME +CDГорнаков С.
Цена: 197.00 руб.

Подпишись на рассылку



Реклама
датчик силы. Элитный чай! Доставка на дом - чай. Элитные Сорта Чая.. Нужна медицинская книжка: медкнижка. Медкнижка на Севере и Юге Москвы.


05 января 2008 г. - Управление индикаторами в Symbian приложениях. Часть 1 - Индикатор сигнала, заряда батареи, вызова



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

Индикатор сигнала - один из элементов панели статуса, расположенный в левой части экрана. Этот индикатор может отображать восемь уровней сигнала, называемых 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

Новости
Sony Ericsson SDK 2.5.0.6 for the Java™ ME Platform

Конкурс для разработчиков Windows Mobile Developers 2009

Вышел Android 1.6 SDK

Motodev Studio for Android

Открыта продажа приложений через Sony Ericsson PlayNow Area


Новые статьи
Отрисовка SVG в J2ME без использования JSR 226 API.

Создание моноширинного векторного шрифта для Java2ME.

Использование векторной графики и анимации в Java ME (JSR 226 API)

Обзор существующих Java ME SDK

Создаем игру с помощью визуальных средств NetBeans. Урок 4 – Соединение с удаленным сервером

Создание Google Android виджетов

Создаем игру с помощью визуальных средств NetBeans. Урок 3 – Задаем логику управления персонажем

Создаем игру с помощью визуальных средств NetBeans. Урок 2 – NetBeans Game Builder

Создаем игру с помощью визуальных средств NetBeans. Урок 1 – NetBeans Visual Designer

Знакомство с Android. Часть 2: Переходы между формами


Реклама



Rambler's Top100


© 2005-2009 MobiLab.ru
При использовании материалов сайта ссылка на www.mobilab.ru обязательна