Symbian开发技巧

Posts filed under 'Symbian开发技巧'

如何通过程序设定是否开机自启动

主要有两个步骤:
1,使用Startup List Management API实现开机自启动
2,重载AppUI中的ProcessCommandParametersL()函数确定是否关闭(自启动后关闭==不启动)

1.1 在data目录下创建一个boot resource file,名字为XXXX.rss, 其中XXXX为UID3。
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO startexe
{
    executable_name = //sys//bin//programToStart.exe; //换成你程序名字
    recovery = EStartupItemExPolicyNone;
}
1.2更新你的MMP文件
SOURCEPATH      ../data
START RESOURCE XXXX.rss
END
1.3更新你的PKG文件,中括号不要丢了!
“/epoc32/data/yyyy.rsc”- “c:/private/101f875a/import/[yyyy].rsc”
有以下几点限制:必须装在c盘,必须用开发者证书。

 如果一切顺利,程序可以自己随着手机开机而自己启动了,但是如何让用户可以在程序中设置让程序不要随机启动呢?
2.1修改程序的注册文件YourAppName_reg.rss:
#include <appinfo.rh>
#include <uikon.rh>   
RESOURCE APP_REGISTRATION_INFO
{
//其他原有代码
  opaque_data = r_startup_detect;
}      
RESOURCE NUMBER_INT8 r_startup_detect
{value = 1;}
2.2 重载AppUI中的ProcessCommandParametersL()函数
Bool CMyAppUi::ProcessCommandParametersL( CApaCommandLine &aCommandLine )
{
  if(aCommandLine.OpaqueData().Length() > 0)
  {
      // 用户手动启动,存在OpaqueData
  }
  else
  {
      // 程序自动启动,存在OpaqueData。
      // 可以在这里判断是否设置为不自动启动, 调用Exit()函数退出
  }
   return CEikAppUi::ProcessCommandParametersL( aCommandLine );
}

 

Popularity: 18% [?]

按下红色结束通话键,程序仍然运行

在Symbian S60第三版中,按下红色的结束通话键,程序默认退出,当还想保持程序继续运行状态,可以在AppUi的HandleWsEventL函数中进行处理,以下代码来自ScreenShot。
// ————————————————————————–
// Starting from S60 3.x, pressing End key will terminate application.
// We don’t want this to happen in this application, so we have to handle
// End key event (KAknUidValueEndKeyCloseEvent).
// ————————————————————————–
void CXXXAppUi::HandleWsEventL(const TWsEvent &aEvent, CCoeControl *aDestination)
    {
    switch (aEvent.Type())
        {
        case KAknUidValueEndKeyCloseEvent:
            break;

        default:
            CAknAppUi::HandleWsEventL(aEvent, aDestination);
        }
    }

Popularity: 15% [?]

Symbian中图片相关的一些问题

碰到两个问题,都是跟mmp文件有关的:

1,打包后的程序太大。

把mmp中改成16位色,效果和24位色差不多。sis安装文件的大小却从265k变成了105k。

2,有些图片是彩色的,有些却是黑白的。

SOURCE c16后面注意不要多了个 “,1 “ ,意思应该是mask,当然有些黑白有些彩色了。

3,另外需要注意的一点就是图片相关的东西修改后需要手动删除Symbian目录下的mbm和mbg文件才会重新生成。比较好的办法是搜索(项目名字.mb*),然后全部删除后再重新生成。

START BITMAP Mobile517.mbm
 HEADER
 TARGETPATH /resource/apps
 SOURCEPATH ../gfx
 SOURCE c16 Main.bmp Search.bmp Collection.bmp MainSearch.bmp MainCollection.bmp MainTour.bmp Tour.bmp
END

Popularity: 10% [?]

Symbian中从Container中直接访问AppUi函数的方法

这个应该是最简单的方法了

对于多View的程序(AppUi继承CAknViewAppUi):
#include <aknviewappui.h>
STATIC_CAST(CAppNameAppUi*,iAvkonViewAppUi)->FunctionInAppUI();

对于单View的程序(AppUi继承CAknAppUi)
#include <aknappui.h>
STATIC_CAST(CAppNameAppUi*,iAvkonAppUi)->FunctionInAppUI();

Popularity: 11% [?]

如何使Symbian程序一直全屏显示

一般而言有如下几种方法:

1,在Container的ConstructL中,调用SetExtentToWholeScreen ();

缺点是一按下“选项”,StatusPane和CBA又出来了。

2,在View的DoActivateL中,调用AppUi()->ApplicationRect()。

同样有如上的问题。

iMobile517MainContainer = CMobile517MainContainer::NewL(AppUi()->ApplicationRect(), NULL, this );

3,通过隐藏Status Pane和CBA,这种方法比较灵光(需要和2同时使用)!

在Container的ConstructL函数中调用:

 CEikStatusPane* statusp = iEikonEnv->AppUiFactory()->StatusPane();
 if(statusp) statusp->MakeVisible(EFalse);
iEikonEnv->AppUiFactory()->Cba()->MakeVisible(EFalse);

Popularity: 9% [?]

如何修改程序界面图标

使用的IDE是Carbide.C++ v1.2 ,SDK是S60 3rd FP1(MR)

1,首先做一个svg类型的图标,可以用Photoshop,Illustrator, inkscape等。

2,将svg类型装换成svg-t,工具由SDK提供

C:/Symbian/9.2/S60_3rd_FP1/S60Tools/svg2svgt/installer

3,转换好后,将其覆盖掉工程中gfx文件夹下的qgn_menu_PROJECT.svg

4,重新生成,图标已经改变了!

Popularity: 9% [?]

如何在Symbian程序中显示中文资源

可以通过以下几步来实现:

1,复制一个xxx.rls字符串文件,改名为xxx31.rls。

2,然后把里面的英文都改成为中文,在头上加入:CHARACTER_SET UTF8

3,用记事本打开,然后另存为UTF-8格式。

4,用UltraEdit打开,在 高级-〉配置-〉常规中点掉“自动检测UTF-8格式文件”。手动删除头上的三个字符。

5,在rss文件头部加入:#ifdef LANGUAGE_01
#include “xxx.rls”
#elif defined LANGUAGE_31
#include “xxx31.rls”
#endif
7,修改PKG文件,将原来的RSC后缀名改为R31,注意,_Reg的也要改!

6,加入到Symbian工程中,修改MMP文件,LANG 01 31,即可编译通过,并生成xxx.r31。

 

“$(EPOCROOT)Epoc32/data/z/resource/apps/ClockSSConfig.R31″  -”!:/resource/apps/ClockSSConfig.rsc”

就这么简单,赫赫~

Popularity: 8% [?]

Symbian Freeware Signing操作流程

1,到Symbiansigned网站上去申请几个Protected UID,每天可以申请20个。需要登陆,在My Symbian Signed的左边栏UIDs/Request,操作非常简便。

2,先用Carbide.C++写一个你的程序,向导建立工程的时候用申请到的UID,或者可以用随机生成的UID。各有优缺点:随机生成的UID可以用自签名,即carbide帮你搞定了,适合初学者,或者不打算symbiansigned的程序。用申请到的UID,就必须用开发者证书去sign生成的sis,才能装到手机上进行测试。

如果起先用的随机生成的UID,后来想symbiansign了,其实也很简单,只需要把随机UID改为ProtectedUID,原则是把能改的都改掉。我犯过一个小错误
“../sis/backup_registration.xml”  -”!:/private/随机UID/backup_registration.xml” 这个东西忘了改了,结果就是安装到一半,然后告诉我“无法安装”。花了近两个小时才找到原因!

3,UID改好之后,可以找个SymbianAppTestLite先测一下你的程序,如果没有什么问题就可以提交到SymbianSigned去Freeware测试了

4,到www.symbiansigned.com,登陆后在MySymbianSigned–Applications–Submit Freeware。

点submit后一共六步,先接受两个协议,在确认提交一个zip包,里面有sis,pkg和readme,然后填入你的个人信息,第五步填入提交的应用程序的信息,最后upload那个zip包。

Popularity: 6% [?]

解决图标问题和Freeware对话框乱码问题

开发过程中发现:用FP1编出来的sis,其图标无法正常显示在MR的手机上(N80和N73都显示空白),如FP1手机(N95)可以正常显示。

解决方法:都用MR编

Carbide.C++ 1.2中右键点工程,选择属性,选择”Carbide build Configuration”,在Active Configuration中点Manage,并选中MR的sdk,然后用那个sdk编译,出来的sis可以正常显示图标!

 Freeware中要弹出一个对话框,告诉用户这是个freeware,英语的好办,没有任何问题。

但是翻译成中文后,保存为UTF-8,N80上出来的是乱码,而N95上又是对的。

比较好的方法,是将该文件保存为Unicode格式!!!

Popularity: 8% [?]

Symbian Signed Test Criteria

仔细阅读了《Symbian Signed Test Criteria》 v2.11.0。总结如下经验:

1,Symbian9所有的二进制文件都放在/sys/bin/目录下,命名冲突概率非常大,所以最好以下方式命名:MyBinName_UID.dll(exe)

2,如果你的程序预装在手机或者存储卡中,需要用Makesis命令生成myapp.SIS文件和myapp_stub.sis文件,同时sign。

Symbian Signed的测试用例(Test Cases)主要分为两部分:Generic Test Cases和Extended Set Capability Test Cases。

其中Generic Test Cases应该被所有Symbian应用程序满足,而Extended Set Capability主要是针对Symbian V9的。

一,Generic Test Cases主要包含:

1,Packaging and Installation,其中包含8个小点

1.1 ACS Publisher ID,要签名的sis文件必须被一个有效的ACS Publisher ID签名过。

1.2 Installation and Startup,程序的安装必须和用户手册相符,一般在5秒内应该启动完成,或者有进度条提示启动过程

1.3 File Creation Location,一般而言,应用程序只在安装盘符中创建文件,除非特殊声明

1.4 Uninstall,卸载时应该删除所有原来安装的文件,以及所有应用程序运行过程中下载或创建的文件

1.5 Installation to all Memory Locations,应用程序应该能安装到所有存储媒体中

1.6 Reinstall,应用程序在被删除后可以重新安装

1.7 UID and Device ID,确保UID和VID必须正确。

    UID: 0×20000000–0×2FFFFFFF,VID:0×70000000–0×7FFFFFFF或者VID=0

1.8 SIS File Version Information,SIS文件的版本信息应该和帮助,说明书和About对话框中的版本信息一致

2:General Usage Tests,其中包含4个小点:

2.1 System Features and OS Friendly,应用程序不能影响系统和其他应用程序的使用

2.2 Stress Test,进行15分钟左右,可以正确处理异常情况,而不会导致手机崩溃或停止响应

2.3 Scalable UI Compliance,支持Scalable UI,不同的分辨率和显示模式

2.4 SIP Session establishment,当收到请求时应用程序应当能建立一个SIP连接

3,Memory Usage,其中包含2个小点:

3.1 Low Memory Startup,应用程序可以比较好的处理低内存情况下的启动,当因低内存退出时可以显示相应出错信息

3.2 Low Storage Memory During Execution,当存储空间不够时,程序应该退出并通知用户该情况

4,Phone Functionality,主要包含2小点

4.1 Service Interruption,当遇到中断时(电话,短信等),程序应该暂停并保存相应状态,并且正确处理该中断。

4.2 Application Functionality After Reboot,程序当突然失去电源后重起后可以正常运行,而不会导致panic或停止响应

5,User Control,主要有4个小点:

5.1 Task List,程序可以通过taks list关闭

5.2 Privacy statement dialog,当程序第一次启动时显示,告知用户capability的使用情况

5.3 Billable Events,当程序需要进行付费操作时应该弹出对话框告知用户

5.4 Backup and Restore Compliance,应用程序不能和Symbian的这项功能冲突

二,Extended Set Capablities主要是对能力(Capability)的限制,分为三部分:

1,Declarative:ProtServ,ReadDeviceData,WriteDeviceData,SwEvent,

               TrustedUI,SurroundingDD,PowerMgmt

2,Phone manufacturer Approval:NetworkControl, MultimediaDD, AllFiles, CommDD, DiskAdmin

3,Phone Manufacturer Grant:TCB, DRM

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值