情景模式及连接状态


2010-01-08 10:37

How to know Flight mode status
From Forum Nokia Wiki
This is done using GetFlightMode() function from CTelephony class.
• Asynchronous call; so to cancel it use CTelephony::EGetFlightModeCancel
• Sometimes the phone’s software may not support this feature then the method returns KErrNotSupported.

Libraries needed:
LIBRARY Etel3rdParty.lib and euser.lib
Source:
class CClientApp : public CActive
{

private:
CTelephony* iTelephony;
CTelephony::TFlightModeV1 iFlightModeV1;
CTelephony::TFlightModeV1Pckg iFlightModeV1Pckg;

public:
CClientApp(CTelephony* aTelephony);
void FlightModeStatus();

private:
void RunL();
void DoCancel();
};

CClientApp:: CClientApp(CTelephony* aTelephony)
: CActive(EPriorityStandard),
iTelephony(aTelephony),
iFlightModeV1Pckg(iFlightModeV1)
{
//Constructor
}

void CClientApp::FlightModeStatus()
{
iTelephony->GetFlightMode(iStatus, iFlightModeV1Pckg);
SetActive();
}

void CClientApp::RunL()
{
if(iStatus==KErrNone)
{
CTelephony::TFlightModeStatus flightMode = iFlightModeV1.iFlightModeStatus;
if(flightMode == CTelephony::EFlightModeOff)
{} //If Flight mode status is off, all operations will be allowed
}
}

void CClientApp::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EGetFlightModeCancel);
}
===============================================================
How to check if the phone is in offline mode

There's a CenRep key KCoreAppUIsNetworkConnectionAllowed that can be used for detecting off-line mode.
#include <CoreApplicationUIsSDKCRKeys.h>
To ask one time:
TInt aOfflineModeOff(0);
  CRepository* repository = CRepository::NewL(KCRUidCoreApplicationUIs);
  if (repository->Get(KCoreAppUIsNetworkConnectionAllowed, aOfflineModeOff) == KErrNone)
     {
     }
  delete repository;
You might want to order notifications about the changes:
 
    iRepository = CRepository::NewL(KCRUidCoreApplicationUIs);
    iCenRepNotifyHandler =
         CCenRepNotifyHandler::NewL(*this, *iRepository,
            CCenRepNotifyHandler::EIntKey, KCoreAppUIsNetworkConnectionAllowed);
    iCenRepNotifyHandler->StartListeningL();
 
void CThisClass::HandleNotifyInt(
    TUint32 aId,
    TInt aNewValue )
    {
    if (aId == KCoreAppUIsNetworkConnectionAllowed)
       {
       }
    }
 
S60 3rd, FP1
Another way to query the profile is to use the Profiles Engine Wrapper API:
#include <proengfactory.h>
#include <mproengengine.h>
MProEngEngine* engine = ProEngFactory::NewEngineLC();
TInt profileId = engine->ActiveProfileId();
if (profileId == 5) //offline
    {
    }
CleanupStack::PopAndDestroy(); //engine

=========================================================================================
How to Detect Offline Mode in 3rd Edition
Headers Required:
#include <centralrepository.h>
#include <ProfileEngineSDKCRKeys.h>
Library needed:
LIBRARY  centralrepository.lib
We need to Query Central Repository.
CRepository* cRepository = CRepository::NewLC( KCRUidProfileEngine );
TInt CurrentProfileId;
User::LeaveIfError( cRepository->Get( KProEngActiveProfile, CurrentProfileId ) );
if ( CurrentProfileId == 5 )
{
 
}
================================================================================
How to get notification of profile change
From Forum Nokia Wiki
Profiles Engine API, part of the Extension plug-in package for S60 3rd Edition, MR, provides a class CProfileChangeNotifyHandler using which we can get a notification for activation of a new profile and modifications of current active profile settings.
Header files
#include <CProfileChangeNotifyHandler.h>
#include <MProfileChangeObserver.h>
Libraries used
profileeng.lib
iHandler = CProfileChangeNotifyHandler::NewL( this );
void CNotifyEngine::HandleActiveProfileEventL(
              TProfileEvent aProfileEvent,
              TInt aProfileId )
    {
     TBuf<30> msg(_L("Current Profile Id : "));
     msg.AppendNum(aProfileId);
 
     switch(aProfileEvent)
      {
      case EProfileNewActiveProfile:
          {
          CEikonEnv::InfoWinL(_L("New Active Profile"),msg);
            break;
          }
      case EProfileActiveProfileModified:
          {
            break;
          }
      case EProfileUnknownEvent:
          {
            break;
          }      
      }
    }
Example project :
NotifyProfileChange_SampleCode
=================================================================
How to detect profile
This sample shows how to detect if the user has selected silent profile (in S60 3rd edition and in older models)
TBool CheckIfSilentMode()
{
#ifdef __SERIES60_3X__
 TBool inSilentMode=EFalse;
 
 CRepository* cr = CRepository::NewLC( KCRUidProfileEngine );
 TInt value;
   // Get the ID of the currently active profile:
      cr->Get( KProEngActiveProfile, value ) ;
      if(value==1||value==2)
  inSilentMode=ETrue;
 cr->Get( KProEngActiveRingingType, value );
 if(value==4) //silent
  inSilentMode=ETrue;
 CleanupStack::PopAndDestroy( cr );
 
#else
_LIT(KProfileDatabase,"c://system//Apps//profileApp//dbProfile.db");
_LIT(KProfileLookup,"ProfileLookup");
_LIT(KProfileStore,"ProfileStore");
 
      CPermanentFileStore* fstore =
        CPermanentFileStore::OpenLC(CEikonEnv::Static()->FsSession(),
        KProfileDatabase,EFileRead);   
 RDbStoreDatabase database;   
 database.OpenL(fstore,fstore->Root());
 RDbTable table; 
 
 table.Open(database, KProfileLookup);
 TBool foundactive = EFalse;
 TInt  prfindex=0;
 while (table.NextL() && !foundactive)
 {
  table.GetL();     
  if (!table.IsColNull(6) && (table.ColInt16(6) != 0) )
  {
   foundactive = ETrue;
   prfindex = table.ColInt16(1);
  }
 }
 table.Close();
 
 TBuf<20> tablestr;
 tablestr.Format(_L("PRF%d"),prfindex);
 table.Open(database,tablestr);
 
// first record, field 3 holds call alert
 table.FirstL();
 table.GetL();     
 TInt value;
 value =  table.ColInt16(3);
 inSilentMode = (value == 4);
 table.Close();
 
 database.Close();
 CleanupStack::PopAndDestroy(fstore);
#endif
      return inSilentMode;
}
=================================2nd上是可以用的 test ok=====================================
Handle Profile Activation
Library Needed:
LIBRARY        PlatformEnv.lib  //CSettingInfo
In Header File
#include <settinginfo.h> // CSettingInfo
#include <settinginfoids.h> // CSettingInfo ID's
 
 
class MyClass:public MSettingInfoObserver
{
void HandleNotificationL( SettingInfo::TSettingID aID,
const TDesC& aNewValue );
 
private:
 
CSettingInfo*    iSettings;
}
In the CPP File
CMyClass::ConstructL()
{
 iSettings = CSettingInfo::NewL(this);
 
 TInt err = iSettings->NotifyChanges(SettingInfo::EActiveProfile);
 if(err != KErrNone)
 {
 
 }
 
}
 
void CMyClass::HandleNotificationL(SettingInfo::TSettingID aID,
const TDesC& aNewValue )
{
 TInt err(0);
 switch(aID)
 {
 case SettingInfo::EActiveProfile:
  {
   TLex parsed(aNewValue);
   TInt value;
 
   if ( (err = parsed.Val(value)) == KErrNone )
   {
                            //Parsing successful
 
                           if(value==0)
                           //"General" Profile is Activated
                           if(value==1)
                           //"Silent" Profile is Activated
                          if(value==2)
                           //"meeting" Profile is Activated
                          if(value==3)
                           //"Outdoor" Profile is Activated
                          if(value==4)
                           //"Pager" Profile is Activated
                          if(value==5)
                           //"Offline" Profile is Activated
 
 
   }
   else
   {
    // parsing failed.....
 
   }
  break;
   }
 
 default:
  break;
 }
}
================================================

这个帖子
symbian 来电铃声及情景模式设置
http://www.devdiv.net/home/space.php?uid=11451&do=blog&id=78

main about using class of CRepository

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值