2nd,检测用户gprs是否已经联接
我有个办法可以检查是否连接中,但还没找到连接的是CMWAP,还是CMNET?也需要请教人
iConnection.EnumerateConnections(ConnectionCount);
for(int i = 1; i <= ConnectionCount; i++)
{
iConnection.GetConnectionInfo(i, connectionInfo);
if(connectionInfo().iIapId == iDefaultAccessPointID)
{
NeedReConnFlag = ETrue;
//MessageBox(_L("NeedReConnFlag = true"));
return NeedReConnFlag;
}
}
如果网络断了,GetConnectionInfo就找不到连接信息了
是不是CMWAP连接,就没办法判断了,我也在找解决办法
------------------------------------------------------------
s60的数据类型转换(巨有用)
1.串转换成数字
TBuf16<20> buf(_L( "123" ) );
TLex lex( buf );
TInt iNum;
lex.Val( iNum );
2.数字转换成串
TBuf16<20> buf;
TInt iNum = 20;
buf.Format( _L( "%d" ) , iNum );
3.将symbian串转换成char串
char* p = NULL;
TBuf8<20> buf( _L( "aaaaa" ) );
p = (char *)buf.Ptr();
4.UTF-8转换成UNICODE
CnvUtfConverter::ConvertToUnicodeFromUtf8( iBuf16 , iBuf8 );
5.UNICODE转换成UTF-8
CnvUtfConverter::ConvertFromUnicodeToUtf8( iBuf8 , iBuf16 );
6.将char串转换成symbian串
char* cc = "aaaa";
TPtrC8 a;
a.Set( (const TUint8*)cc , strlen(cc) );
再加一点:
TDesC8 & buf ;
TUint8 * pdata ;
pdata = buf.Ptr() ;
然后,这个pdata就可以当成unsigned char *用了,这在网络通讯的时候很重要。
如果,怕pdata破坏的话,可以
TBuf8<1024> tmp_buf ;
tmp_buf.Copy(buf) ;
pdata = tmp_buf.Ptr() ;
这样就可以保护一下buf的数据了,尤其是如果这个buf是Socket的接收的数据是接收函数自己分配的时候。
------------------------------------------------------------
如何检测手机型号
所有的Series60设备都拥有一个由制造商分配的唯一标识符-机器UID;因此可以通过这一UID信息来获取手机型号;本文就介绍了这种方法.
常见的S60机型及其机器UID:
S60 1st Edition (0.9):
Nokia 7650 0x101F4FC3
S60 1st Edition, FP1 (1.2):
Nokia 3650 0x101F466A
Nokia 3660 0x101F466A
Sendo-X 0x101FA031
Siemens SX-1 0x101F9071
S60 2nd Edition:
Nokia 6600 0x101FB3DD
S60 2nd Edition, FP1:
Nokia 3230 0x10200F97
Nokia 6260 0x101FB3F4
Nokia 6620 0x101F3EE3
Nokia 6670 0x101FB3F3
Nokia 7610 0x101FB3F3
S60 2nd Edition, FP2:
Nokia 6630 0x101FBB55
Nokia 6680 0x10200F99
Nokia 6681 0x10200F9C
Nokia 6682 0x10200F9B
S60 2nd Edition, FP3:
Nokia N70 0x10200F9A
Nokia N90 0x10200F98
other
Nokia N-Gage™ 0x101F8C19
Nokia N-Gage™ QD 0x101FB2B1
因此可通过以下代码获取手机型号:
void GetPhoneModeL(TDes& /*aModeBuf*/)
{
TInt machineUid=0;
HAL::Get(HALData::EMachineUid, machineUid);
switch(machineUid)
{
case 0x101F9071:
{
//Siemens SX1
break;
}
case 0x101F466A:
{
//Nokia 3650
break;
}
case 0x101F4FC3:
{
//Nokia 7650
break;
}
case 0x101FB3DD:
{
//Nokia 6600
break;
}
.....................
}
//需要在头文件中include<hal.h>;在mmp文件中加上hal.lib
----------------------------------------------------
动态改变 CBA 按钮
Code:
RESOURCE CBA r_yourapp_softkeys_options_open
{
buttons =
{
CBA_BUTTON { id=EAknSoftkeyOptions; txt = "Options"; },
CBA_BUTTON { id=EYourAppCmdOpenApp; txt = "Open"; }
};
}
RESOURCE CBA r_yourapp_softkeys_options_stop
{
buttons =
{
CBA_BUTTON { id=EAknSoftkeyOptions; txt = "Options"; },
CBA_BUTTON { id=EYourAppCmdStopApp; txt = "Stop"; }
};
}
In the HRH file:
Code:
enum TYourAppCommandIds
{
// ...
id=EYourAppCmdOpenApp,
id=EYourAppCmdStopApp,
// ...
};
In your application's AppUi class:
Code:
void CYourAppUi::SetCommandSetL(TInt aResourceId)
{
CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
cba->SetCommandSetL( aResourceId );
}
Now you can call:
SetCommandSetL( R_YOURAPP_SOFTKEYS_OPTIONS_OPEN );
OR
SetCommandSetL( R_YOURAPP_SOFTKEYS_OPTIONS_STOP );
where ever you want.