Archive for category Symbian
如何得到手机的型号?symbian
From:newLC
Common products UIDs
S60
| Platform | Device | Product UID | Machine/Platform UID |
|---|
UIQ
| Platform | Device | Product UID | Machine/Platform UID |
|---|
Other/Older Platforms
| Series 80 v2.0 | 0×101F8ED2 |
How to use the UIDs
Platform UID
These UIDs shall be used in your PKG file to specify on which platform your application will work. As an example, an application running on Series 60 v0.9 platform will have the following line in its PKG:
(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
Starting with S60 3rd Edition, the syntax is now:
[0x101F7961], 0, 0, 0, {"S60ProductID"}
Or for UIQ 3:
(0x101F6300), 3, 0, 0, {"UIQ30ProductID"}
(0x101F63DF), 3, 1, 0, {"UIQ31ProductID"}
Product UID
The product UID can be use instead of the platform UID if oyr application is specific to a single phone and not the whole platform family. Exemple for a Nokia 6630 specific application:
(0x101F7964), 0, 0, 0, {"Nokia6630ProductID"}
With S60 3rd Edition and later, you can use several phones target. Ex for N71 and N80:
[0x10275218], 0, 0, 0, {"Nokia N71 ID"}
[0x200005F9], 0, 0, 0, {"Nokia N80 ID"}
Machine UID
#include <hal.h> // also link to hal.lib
TInt mUid = 0;
HAL::Get(HALData::EMachineUid, mUid);
Here is a list of machine and platform UIDs that can be used to uniquely identify a phone model or its family: :
symbian程序调试小总结
1.模拟器上运行正常:真机上运行不正常:
A:请检查一下打包的文件时里面有没有把相应的RSC。或者对应的所包含的文件加进去。。。
比如说要弹出一对话框,但没把对应的RSC文件写到打包的PKG文件中
2.之前运行正常,现在运行不正常,
A:请检查一下程序里面程序有包含文件。。没有写到C:\Symbian\9.2\S60_3rd_FP1\Epoc32\winscw\c或者其他。。。
可能为数组越界了
Symbian的dll调用RSS过程
1.包括为自定义ccoecontrol –CMycontrol
2.自定义对话框 -CTagDialog
一步一步说明:
1.新建一RSS文件,zhi6dialog.rss 里面有必须的资源:
// RESOURCE IDENTIFIER
NAME HEWB // 4 letter ID
// INCLUDES
#include <eikon.rh>
#include <avkon.rh>
#include <avkon.rsg>
#include <appinfo.rh>
RESOURCE RSS_SIGNATURE
{
}
RESOURCE TBUF r_default_document_name
{
buf="HEWB";
}
RESOURCE DIALOG r_mp3_tag_information_dialog
{
flags = EEikDialogFlagNoDrag |
EEikDialogFlagNoTitleBar |
EEikDialogFlagFillAppClientRect |
EEikDialogFlagCbaButtons |
EEikDialogFlagModeless;
//buttons = R_AVKON_SOFTKEYS_SAVE_BACK;
buttons = R_AVKON_SOFTKEYS_OK_BACK;
//form = r_mp3_tag_information_form;
}
2.加入到mmp中,让其能编译
START RESOURCE ..\data\zhi6dialog.rss
TARGET zhi6dialog.rsc
TARGETPATH \resource
HEADER
END
3.在要用的CPP中,调用其rsg文件
#include "zhi6dialog.rsg"_LIT(zhi6Resource,"z:\\resource\\zhi6dialog.RSC");
4.不同的是要指定资源文件
TInt irscOffset=CEikonEnv::Static()->AddResourceFileL(zhi6Resource);
// Popup test dialog
iTagDialog->ExecuteLD(R_MP3_TAG_INFORMATION_DIALOG);...................参考:http://discussion.forum.nokia.com/forum/showthread.php?t=94158
例子下载
手机按键的一些处理iCode iScanCode
symbian手机的按键处理还是有一些情况:
1.OfferKeyEventL( const TKeyEvent& aKeyEvent,
TEventCode aEventCode )
这个是截获键盘处理事件的方法,aKeyEvent提供iCode,iScanCode
TInt isCode = aKeyEvent.iScanCode;
TInt keyCode = aKeyEvent.iCode;
TEventCode 提供的处理按键的类型:EEventKey,EEventKeyUp,EEventKeyDown
TKeyResponse CAknExListSettingContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
{
if ( aType != EEventKey ) // aType的值可以是EEventKey,EEventKeyUp,EEventKeyDown,一般事件不需要处理这些,因为EEventKeyDown都是游戏里面用到,比方说按下去不动发射什么。。。
{
return EKeyWasNotConsumed;
}TChar charCode(aKeyEvent.iCode);switch ( charCode ) // The code of key event is...
{
case EKeyLeftArrow: // Left key. 对照表在epoc32\include\E32KEYS.H ,carbide里面可以找的到
case EKeyRightArrow: // Right Key.
// 相关处理
break;
default:
{
break;
}}d
return EKeyWasConsumed;
}
——————–分隔线—————————
标题: 带完整键盘的S60第三版设备上的按键映射
KIS000351
设备, 软件 版本: S60 3rd Edition
说明:
在一些S60第三版手机上有完整的键盘,其中一些键值只有通过FEP模式下编辑框才能获得
创建日期: July 7, 2006
详细描述:
在Nokia E61以及E70等带全键盘的机器上运行的程序时,如果要捕捉CCoeControl派生类下的按键事件时,在FEP模式下的编辑框中是无法获取同样键值的(通过TKeyEvent::iCode)。
这是因为QWERTY键盘的映射是依赖于当前的语言和输入模式的。例如,在Nokia E61上,CCoeControl派生类在数字键盘被按下时总是获得1,2,3。。。。而只有在FEP模式下的编辑框中(如CEikEdwin)它才能获取字母键”r”,”t”,。。。等。
注意scan codes(TKeyEvent::iScanCode)是不会受当前语言或输入模式影响的。
案例重现:
解决方案:
应用程序在处理文本输入时,应该使用表示准的Avkon编辑框控件。
————————————————–分隔线————————-
iScanCode保存的是键被按下或弹起的值,iCode保存的是一次完整按键事件对应的值.
来自http://discussion.forum.nokia.com/forum/showthread.php?p=434118不解何意
Symbian S60 V3自启动各种问题解决办法
S60自启动,是个麻烦的事情,但是可以在SDK中的Startup List Management API找到
1.相关的说明可以看这里:
在3版中实现并动态配置开机自启动
2.开机后如果自动启动就自动退出,但是人肉启动时不用退出,可以这样子
TBool CFepSetupAppUi::ProcessCommandParametersL(CApaCommandLine &aCommandLine)
{
if(aCommandLine.OpaqueData().Length() > 0)
{
// Opaque data exists, app. has been manually started from the menu
}
else
{
//加载后退出
iCoeEnv->InstallFepL( fepZhi6WubiUid );
CAknAppUi:Exit();
//iEikonEnv->RootWin().SetOrdinalPosition(-1);
// App. has been auto-started -> exit if auto-start in settings is OFF
}
return CEikAppUi::ProcessCommandParametersL( aCommandLine );
}
更多文档,也可以看这里:How can I disable autostart if it is enabled? How can I make autostart /autoboot dynamic?
3.用一个console程序来启动,然后来退出,因为要contruct ccoeenv,所以暂时没能提供
Fepexample真机调试~~
源起:
FORUM nokia 提供Symbian 3rd的源代码:
http://www.forum.nokia.com/info/sw.nokia.com/id/43ce27a1-ade6-4dbc-9450-932367982844/S60_Platform_FEP_Example_v2_0_en.zip.html
Carbide C++编译:
常见错误:修改FepExample_S60_3rd_ed.pkg
加入正确路径:
"\Symbian\9.2\S60_3rd_FP1\Epoc32\release\gcce\urel\FepExample.dll" -"!:\sys\bin\zhi6.dll"
"\Symbian\9.2\S60_3rd_FP1\Epoc32\Data\z\resource\plugins\FepExample.rsc" -"!:\Resource\Plugins\zhi6.rsc"
按照Developer Certificate证书在symbiansinged生成sisx
但是安装到选择安装目录时出现”未授予所需的程序接入权限”(Required application access not granted)
解决方案:
参考这个仁兄:http://discussion.forum.nokia.com/forum/showthread.php?t=119231
所以我们可以这样做:elftran这个程序:
1.选好:phone release(GCCE),pkg文件不要选
2.这一项最重要:cmd下命令:
C:\Documents and Settings\k>elftran -capabilities LocalServices+Location+Network
Services+PowerMgmt+ProtServ+ReadDeviceData+ReadUserData+SurroundingsDD+SwEvent+T
rustedUI+UserEnvironment+WriteDeviceData+WriteUserData C:\Symbian\9.2\S60_3rd_FP
1\Epoc32\release\gcce\urel\fepexample.dll
ELFTRAN – ELF file preprocessor V02.01 (Build 564)
Copyright (c) 1996-2006 Symbian Software Ltd.
3.再编译生成sis:
直接用carbide c++选pkg来build就OK
再把生成的sis自做签名:
signsis zhi63_071105_FepExample_S60_3rd_ed.sis zhi63_071105_FepExample_S60_3rd_ed.sisx my.cer key.key
上传到手机就OK~~~~不会再报错了….
其他相关文章:
1.symbian S60 v3刷机去掉权限限制:
Goodbye S60 Platform Security, Hello CAPABILITIES!
2.symbian签名绕开Manufacturer capability ,,,
How to grant any capability to self signed applications
3.S60 3rd MMP CAPABILITY的说明,很有意义
link here
4. the FepExample component has to be signed using the Manufacturer Approved Developer Certificate不是必须的,上面的做法就可以做到。。。
symbian读写文件注意点:
1.所在的包为:
#include <stdio.h>
http://www.symbian.com/developer/techlib/v8.1adocs/doc_source/reference/reference-cpp/N102CE/FILETypedef.html#%3a%3aFILE
2.project中要加入的是:
MMP文件:
SYSTEMINCLUDE \epoc32\include\libc
LIBRARY estlib.lib
3。否则报错:
..\src\BirthdaysListView.cpp:36: the file 'stdio.h' cannot be opened
..\src\BirthdaysListView.cpp:361: undefined identifier 'FILE'
..\src\BirthdaysListView.cpp:362: undefined identifier 'file'
..\src\BirthdaysListView.cpp:363: undefined identifier 'file'