Symbian

2009年12月03日

原创 Symbian网络接入点常用编程

Symbian网络接入点常用编程2009-05-14 19:04从CommDb中获取接入点信息:CCommsDatabase* commsDB=CCommsDatabase::NewL(EDatabaseTypeIAP);CCommsDbTableView* table= commsDB->OpenIAPTableViewMatchingBearerSetLC(ECommDbBearerGPRS|ECommDbBearerWLAN, //GPRS和无线局域网ECommDbConnectionDirectionOutgoing); //方向无所谓的,写Unknown也可以User::LeaveIfError(table->GotoFirstRecord()); //转到第一条记录TInt err = KErrNone;do{TBuf name;TUint32 id;table->ReadTextL(TPtrC(COMMDB_NAME), 阅读全文>

发表于 @ 2009年12月03日 10:34:00 | 评论( loading... ) | 编辑| 举报| 收藏

原创 【转载收藏】symbian中如何检测编辑框的当前输入法类型


当我们进行全屏程序开发的时候,对编辑框中当前的输入法要时行判断,以方便我们在界面上贴图表现,通过下面的三步可以完成这个功能:
1、在.h文件中加入相关的头文件
#include // for CAknEnv::Static()
#include //for CAknIndicatorContainer

2、在.h文件中加入用到的类定义
struct S_uid: public TUid
{
       S_uid(int i)
       {
            iUid = i;
       }
};

class MAknEditingStateIndicator
{
public:
       virtual void SetState(TAknEditingState aState) = 0;
阅读全文>

发表于 @ 2009年12月03日 01:02:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年11月05日

原创 symbian BMP 旋转90''


 CFbsBitmap* CameraManager::rotateBitmap90 (CFbsBitmap& src)   {       CFbsBitmap* pDstBmp = new (ELeave) CFbsBitmap ();       TSize srcSize = src.SizeInPixels();       TDisplayMode mode = src.DisplayMode();       User::LeaveIfError(pDstBmp->Create(TSize(srcSize.iHeight,srcSize.iWidth), src.DisplayMode()));              TBitmapUtil srcUtil ( &src );       TBitmapUtil dstUtil ( pDstBmp );              srcUtil.Begin(TPoint(0,0));       dstUtil.Begin(TPoint(0,0));       if ( mode == EColor16M阅读全文>

发表于 @ 2009年11月05日 09:42:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月28日

原创 判断S60程序使用接入点情况


TUint connCount = 0;
    iMonitor.GetConnectionCount(connCount, iStatus);
    User::WaitForRequest(iStatus);
    if ( KErrNone != iStatus.Int() || connCount == 0 )
    {
        return;
    }


    for ( TUint i = 1; i
    {
        //match connection id
        TUint id = 0;
        TUint subCount = 0;
        TInt err = iMonitor.GetConnectionInfo(i, id, subCount);
        LOG_FORMAT(( _L("GetCo阅读全文>

发表于 @ 2009年10月28日 11:33:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月14日

原创 Symbian中RArray与RPointerArray的用法


Symbian OS不支持STL,主要原因是因为STL覆盖的面太广,不适合在内存受限的设备上使用。
在这里我们首先学习RArray模板类。如果您有java或者.net方面的经验,Symbian中的RArray和RPointerArray类似于java中的Vector或.net中的List。
注意事项:RArray和RPointerArray都是基于模板的 RArray的模板参数应该为R类或T类,而RPointerArray的模板参数可以是任意类型 RArray是固定长度对象的集合(最小长度为4个字节,对象的sizeof必须>4!),RPointerArray是对象指针的集合 RArray和RPointerArray应该创建在栈上,或者为C类的成员变量。
接下来我们将针对RArray和RPointerArray的几个常用的方法进行介绍,以下所有演示代码都在控制台程序中执行。

一、常用方法
1、[]操作符
RArray重载了[]操作符:
 inlineconst T &operator[]阅读全文>

发表于 @ 2009年10月14日 16:05:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年09月22日

原创 symbian http

转字CSDN最近一直做symbian http上传下载项目,在几个问题上面绕了个大弯,耽误了好长时间,现总结一下遇到的问题以及解决方法,为己为人.简单介绍一下基础知识.
1)      GRPS接入方式:
CMNET和CMWAP是中国移动GPRS网络的两个不同APN(Access Point Name接入点名称)。CMNET提供了NAT服务,使用该服务的手机可以直接访问internet。CMWAP只提供了WAP代理和HTTP代理,手机上网能访问的范围有限,接入时只能访问GPRS网络内的IP(10,*,*,*)。因此CMWAP主要用于手机WAP上网,CMNET则是用于PC,笔记本电脑,PDA等设备实现GPRS上网。两者手机上网的方式没有差别,如此划分是中国移动对手机上网服务对象的定位不同,所以他们的应用范围和资费标准不同。
2) CMNET和CMWAP区别:
A:CMWAP只开放80,8080,9201端口,适合http,wap访问(10.0.0.172起初是做为CSD方式的无线接入的网关,那时使用的是9201端口,运行的是WAP(Wireless阅读全文>

发表于 @ 2009年09月22日 11:16:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年08月13日

原创 symbian 文件读写及读写流


1. FileServer之文件操作: a. 遍历指定文件目录 RFs& rs = CCoeEnv::Static()->FsSession(); // 建立一个文件服务器回话 CDir* dirEntryList = NULL; // 用来保存获取到的目录下的条目 _LIT(KPath, “C:\\Nokia\\”); // 文件夹目录的路径 // 使用文件服务器回话来遍历文件夹目录 User::LeaveIfError(fs.GetDir(/*const TDesC& */ KPath, // 要遍历的文件目录路径 /* TUint */ KEntryAttNormal, // 要获取的文件属性(非系统和隐藏文件) /* TUint */ ESortByName, // 按名字排序 /* CDir*& */ dirEntryList // 返回的文件和目录条目指针 ) ); // 遍历文件目录条目 For(Tint i =0; i Count(); i++) { const TEntry& anEntry = (*dirEntryList阅读全文>

发表于 @ 2009年08月13日 22:00:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年08月02日

原创 Symbian OS应用开发学习笔记之通讯录(电话薄Contacts)

Symbian OS通讯录模型
Symbian OS手机的通讯录采用文件方式存储,用symbian自己的说法就是通讯录数据库。每个Symbian OS手机都有一个默认的通讯录数据库,这个通讯录数据库在2nd和3rd两个版本手机中的位置是不同的,前者是c:\ system\data\Contacts.cdb,后者是c:\private\100012a5\DBS_100065FF_Contacts.cdb。不管怎么说两者都在内部闪存中,也就是跟优盘差不多的介质,由于symbian OS的文件系统暂时还没有仔细拜读过,所以具体差别暂不知,总之掉电不会失去就是了。
Symbian OS的手机通讯录在开发上的操作依靠Symbian OS通讯录模型(Contacts Model)来实现。通讯录模型由通讯录数据库、通讯录条目(项)和通信录域三者组成,他们之间的关系是:一个手机除了系统自带的默认通讯录数据库外还可以带多个通讯录数据库;一个通讯录数据库有多个通讯录条目组成,这里每个条目就是每个联系人,具体数量限制各个手机应该不一样;而一个通讯录条目又有多个通讯录域组成,好比有姓名、工阅读全文>

发表于 @ 2009年08月02日 21:23:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月29日

原创 不通过rss文件,程序手动构建CEikEdwin的问题


问题:
我不想用rss来构建CEikEdwin,因为CEikEdwin会经常改变输入限制。所以考程序来设置比较好。
但我一个只让输入英文的输入框构建如下:
iPSEdwin = new (ELeave) CEikEdwin;
iPSEdwin->SetContainerWindowL(*this);
iPSEdwin->ConstructL(EAknEditorFlagDefault,16,16,1);
iPSEdwin->SetInputCapabilitiesL(TCoeInputCapabilities::EWesternAlphabetic );

可运行后发现,只能输入数字,右上脚的输入法提示也没有了。
但另外一个只让输入数字的输入框构建如下:
iIDEdwin = new (ELeave) CEikEdwin;
iIDEdwin->SetContainerWindowL(*this);
iIDEdwin->ConstructL(EAknEdit阅读全文>

发表于 @ 2009年06月29日 17:01:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月24日

原创 Symbian C++ 标题面板


 一般情况下,标题面板显示应用程序的名字,但可以更改为自定义的标题,也可以改成一副图像,如果选择的标题过长以致超过了行宽,则此标题分为两行显示,如果两行也无法容纳,则会截断次标题,也可以把标题设成空字符串,此时将不显示标题。

   TitlePane实例显示了如何更改标题面板的文本和怎样在标题面板中显示图像,以及如何在资源文件中静态定义标题面板。

1.更改标题面板的文本
void CTitlePaneAppUi::HandleCommandL(TInt aCommand)
 {
 switch (aCommand)
  {
  case EEikCmdExit:
  case EAknSoftkeyExit:
   Exit();
   break;

  //更改标题面板的文本
  case ETitlePaneCmdTitleText:
   {
   //定义标题面板ID
阅读全文>

发表于 @ 2009年06月24日 14:30:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月18日

原创 《Symbian OS:线程编程》


《Symbian OS:线程编程》
Symbian操作系统中的线程和进程

在Symbian操作系统中,每个进程都有一个或多个线程。线程是执行的基本单位。一个进程的主线程是在进程启动时生成的。
Symbian属于抢占式多任务操作系统,这意味着每个线程都有自己的执行时间,直到系统将CPU使用权给予其他线程。当系统调度时,具有最高优先权的线程将首先获得执行。
进程边界是受内存保护的。所有的用户进程都有自己的内存地址空间,同一进程中的所有线程共享这一空间,用户进程不能直接访问其他进程的地址空间。
每个线程都有它自己的stack和heap,这里heap可以是私有的,也可以被其他线程共享。应用程序框架生成并安装了一个active scheduler,并且为主线程准备了清除栈。如果没有使用框架(如编写exe程序)那就要手动生成这些了:)
Symbian操作系统专为单线程应用优化,因此强烈推荐使用“活动对象”代替多线程。

一、使用单线程的优点
在每个线程都有自己的stack空间时,使用单阅读全文>

发表于 @ 2009年06月18日 09:17:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月17日

原创  Symbian 活动对象彻底理解收藏



Symbian编程总结-基础篇-活动对象正解(1)-理解活动对象
Symbian OS中的活动对象的使用无疑是最基础的、最频繁的、最重要的。什么是活动对象呢?
大家学习一个新的事物时,总是会将这个新的事物与自己认知的事物相比较,从而达到快速学习的目的。我开始学习Symbian的时候,我查看很多 Symbian书籍、网上很多Symbian教程都将活动对象与多线程联系到一起,我也总是会把活动对象想象成一个线程。然而,经过了更深入的接触,我发现并不像我想象的那样。
现在,我在此向你保证:活动对象和多线程没有任何关系!不要拿平时做多线程的思想去理解活动对象!
活动对象可以按照以下步骤这么理解:
Symbian OS中提供了很多异步函数,这些异步函数大多部分都是基于“服务器-客户端”架构的。这里与win32 api中的函数有很大的不同。如:
win32中,CSocket::Receive(是recv而不是WSARecv)为同步函数,线程阻塞在Receive处,直到套接字接收到了网络流才返回。
Sym阅读全文>

发表于 @ 2009年06月17日 23:22:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月15日

原创 symbian socket | 网络编程


一切的知识都得从基础抓起!!!!这是我学习socket编程的初步文档,后期文档将陆续推出!!
总是想自己写点什么,但是网络这块,大学学习的不是很好,所以,等我有了更深的体会吧。。关注

1 简介
2 有关Socket的服务构架
2.1 什么是socket?
2.2 协议模块
2.3 传输的独立性
2.4 “客户端-服务器”接口
3 sockets服务器的主要类
4 使用RSocketServ类
4.1 建立一个连接到sockets服务的会话
4.2 预载入协议模块
5 使用RSocket类
6 主机解析服务
6.1 什么是主机解析?
6.2 使用RHostResolver类
6.3 域名服务(DNS)
7 在socket代码中使用活动对象(active objects)
8 代码示例: 连接sockets
8.1 服务‘监听’类的定义
8.2 做好接收客户端连接的准备阅读全文>

发表于 @ 2009年06月15日 23:54:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年06月08日

原创 创建编辑框


S60中的编辑框控件有很多种(普通编辑框、全局文本、IP地址、日期等等),这里只介绍普通编辑框——CEikEdwin。

一、创建编辑框
创建编辑框有两种方法:
1. 通过资源创建
1)资源定义

RESOURCE EDWIN r_example_editor
{
flags = EEikEdwinWidthInPixels; // 以像素为单位
width = 240; // 控件宽度
lines = 2; // 行数
maxlength = 1024; // 文本最大长度
}
2)生成代码
    TResourceReader reader;
    iCoeEnv->CreateResourceReaderLC( reader, R_EXAMPLE_EDITOR );
    iEditor = new ( ELeave ) CEikEdwin;
    iEditor->SetCon阅读全文>

发表于 @ 2009年06月08日 23:38:00 | 评论( loading... ) | 编辑| 举报| 收藏

原创 Debugging techniques

Debugging techniquesFrom Forum Nokia WikiContents[hide]1The emulator doesn’t display the details of a panic2Bug detection using assertions3Detecting memory leaks with __UHEAP_MARK and __UHEAP_MARKEND macros4Object invariance macros5Detecting incorrect use of cleanup stack with expected itemsThe emulator doesn’t display the details of a panic If a panic occurs, the emulator doesn’t display its details unless there is a file named “ErrRd” in a specific location. This makes it difficult to kn阅读全文>

发表于 @ 2009年06月08日 18:19:00 | 评论( loading... ) | 编辑| 举报| 收藏

Copyright © hzb1983
Powered by CSDN Blog