1. 获取文件的完全路径
在头文件添加下列声明:IMPORT_C TInt CompleteWithAppPath( TDes& aFileName );TFileName filename(_L("RETROBLASTER.MBM"));CompleteWithAppPath( filename );
2. 获取当前设备显示方式(就是获取设备的色深)
使用的头文件:#include <eikenv.h>在任何VIEW视图代码里面:TDisplayMode displayMode = iEikonEnv->ScreenDevice()->DisplayMode();
3. 获取当前系统时间(一般用于游戏开发,计算2祯之间的时间差)
TTime currentTime;currentTime.HomeTime();TInt64 currentTick = currentTime.Int64();
4. 强制让程序从前台转到后台
TApaTaskList tasklist(iCoeEnv->WsSession());TApaTask task(tasklist.FindApp(TUid::Uid(填入你项目的UID))); task.SendToBackground();
5. 显示中文汉字(2种方法)
1) 在RSS资源文件里面定义RESOURCE TBUF64 r_example_view_title { buf = "新年快乐";}然后将其用WORD转换成UTF8编码,在此RSS文件头部添加CHARACTER_SET UTF8,否则无法编译,然后在程序里面调用,就能显示中文了。
2) 用系统CcnvCharacterSetConverter API来转换CCnvCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC();if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, iEikonEnv->FsSession())!=CCnvCharacterSetConverter::EAvailable) User::Leave(KErrNotSupported); TText8 *str = (TText8*)"新年快乐"; TInt state=CCnvCharacterSetConverter::KStateDefault; TPtrC8 source( str ); iInfoText = HBufC::NewL( source.Length() ); TPtr16 ptr = iInfoText->Des(); if(CCnvCharacterSetConverter::EErrorIllFormedInput == converter->ConvertToUnicode(ptr, source, state)) User::Leave(KErrArgument); //Leave if error in conversion.CleanupStack::PopAndDestroy(); //clean for converter随后你就可以Draw出中文字体了,前提是你设备内有中文字库
6.获取IMEI串号
#include <plpvariant.h>void DeviceUtils::GetImei(TDes& aImei){#ifndef __WINS__ //真实设备 // This only works on target machine TPlpVariantMachineId imei; PlpVariant::GetMachineIdL(imei); aImei.Copy(imei);#else //模拟器 // Return a fake IMEI when working on emulator _LIT(KEmulatorImei, "000000000000000"); aImei.Copy(KEmulatorImei);#endif}
7.震动
用CvibraControl API,6.1的机器上没VibraCtrl.lib和VibraCtrl.DLL,从N-GAGE机器上COPY一份就行。模拟器上直接COPY N-GAGE SDK里面的。7.0的SDK可以直接使用