跳转到内容

Symbian/S60

来自维基教科书,自由的教科书,构建自由的世界
诺基亚 7650,一款 S60 设备。

诺基亚的 S60,以前称为 Series 60,是一个基于 Symbian OS 的移动平台。S60 包含各种功能的手机。大多数这些手机是由诺基亚制造的,但 S60 也授权给一些其他手机制造商,如松下和三星。有关 S60 的一般信息,请参见维基百科上的文章.

该平台包含各种库和预装应用程序。平台是开放的(但不是开源的),因此第三方可以为其开发应用程序。诺基亚为 S60 提供软件开发工具包,可以在诺基亚论坛找到 SDK 列表。特别是如果您计划使用更新的 SDK,您将需要Carbide.vs.

技巧集合

[编辑 | 编辑源代码]

S60 资源定义有时可能很繁琐,因为完全缺乏适当的文档。寻找有关资源定义信息的最佳位置是示例,位于 SDK 的 Series60Ex 目录中,但它们也不尽完美。

  • CAknMessageQueryDialog

某些 SDK 版本的示例中完全缺少一个控件,即 CAknMessageQueryDialog,它实际上非常有用,一旦您知道如何使用,就非常容易使用。以下是定义此控件的工作资源的方法

RESOURCE DIALOG r_messagequery_dlg
  {
  flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
  buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
  items=
    {
    DLG_LINE
      {
      type = EAknCtPopupHeadingPane;
      id = EAknMessageQueryHeaderId;
      control = AVKON_HEADING
        {
        label = "The Heading";
        };
      },
    DLG_LINE
      {
      type = EAknCtMessageQuery;
      id = EAknMessageQueryContentId;
      control = AVKON_MESSAGE_QUERY
        {
        message = "The Actual Text";
        };
      }
    };
  }

请注意,标题和消息文本都可以从代码中动态设置。但是,以下代码使用资源中给定的值

CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog;
dlg->ExecuteLD( R_MESSAGEQUERY_DLG );

至少在两部手机上,对旧版 RCameraServ 的支持已被删除。如果您将您的应用程序链接到 cameraserver.lib,它将不会在 3230 或 6260 上启动。相反,您应该使用新的 CCamera 类。

CFbsBitmap

[编辑 | 编辑源代码]
  • 透明度

在使用 6.1 之前的 SDK 时(注意:不确定 9.1 是否仍然存在此问题),将 PNG 的 alpha 通道(蒙版)加载到颜色深度为 EGray16 的 CFbsBitmap 中不起作用。您必须使用颜色深度为 EGray256 的蒙版,否则 MiuoConvertComplete 将始终返回错误。转换完成后,您可以转换回 EGray16。

  • DataAddress()

在新的 9.1 SDK 上,如果未在之前调用 LockHeap(),则调用 CFbsBitmap::DataAddress() 会导致崩溃(记住在完成操作后调用 UnlockHeap())。

华夏公益教科书