移动平台

WM模拟器上DirectDraw的BackBuffer问题解决方法

上次在参考研究mobile sdk 6.0中自带的DDraw例子时发现在模拟器上跑到创建后备缓冲时由于不支持DDSCAPS_BACKBUFFER而导致程序不能运行,google了一通发现m$网站和其他一些论坛上也有人问过类似问题,得到的答案貌似是说emlator上不能跑DDraw和D3D的程序,要测只能用device,其实只要自己实现一个创建后备缓冲以及用blit模拟flip的方式就可以在模拟器上跑了,并不是模拟器根本就没有实现DDraw,只是没有实现硬件后备缓冲、翻转等操作(其实在现在的PC模拟器上的这2种方式应该也没有什么效率上的差异吧)。
具体代码:
Continue reading…

Nokia官网Sound Mixer Example v2.1中用的wav文件格式

Nokia官网提供的混音示例程序中http://www.forum.nokia.com/info/sw.nokia.com/id/650db12f-06aa-4608-b17a-387b70412304/S60_Platform_Sound_Mixer_Example_v2_1_en.zip.html使用的wav格式为16-bit mono的标准pcm采样文件的纯采样数据部分(这样好处是去掉了wav头信息,减少了一定的容量,坏处就是不能用一般的播放器直接播放),以下为生成该种wav的方法:
Continue reading…

windows mobile中的directdraw

今天说研究一下mobile的游戏开发吧,先从2d这块入手。查到资料说早期是用一种叫做gapi的接口作的,但后来被directdraw取代了,那就用dd吧,好在以前研究过pc的,找了个例子看了看基本差不多,可发现模拟器上无法运行,因为后备缓冲不支持,真是麻烦了啊,调试只能用真机了?

强制内嵌SIS文件的版本检查

TSS001331
开发伙伴平台:
S60 3rd Edition FP1, S60 3rd Edition FP2
详细描述
当安装程序检查到手机已经装有该SIS文件的相应版本时,会弹出提示警告窗口。但是安装程序并不会检查内嵌SIS文件版本,即时手机上已经装有该应用程序。
在PKG文件中我们可以确保安装程序只在已安装的内嵌SIS文件版本低于当前版本或之前根本没有安装时覆盖内嵌SIS文件。
解决方案
在PKG文件中需要进行相关设置。可以通过AppProp()函数测试PKG的属性。获得内嵌SIS的主副版本号和编译号。

Continue reading…

RGA在非官方支持平台上的可安装情况

虽然nokia官方声明的随open c放出的RGA图形声音库只能在s60 3rd中的部分机型上使用,但根据其本质(新N-Gage的一部分)分析,理论上应该可以应用于所有s60 3rd机型,新N-Gage平台通过破解手机证书系统可以实现安装在所有三版机上,但由于硬件性能的差别导致部分n-gage游戏在N73这类机型上不能正常运行。目前测试的在E71机型上可以正常安装RGA库,可用性还有待测试。

[ZT]CMWAP 和CMNET 的主要区别与适用范围

  如果你是一个菜鸟或者初学者,不妨直接跳到第(4)节,看看我提供的”应用程序能否工作于CMWAP的辨别方法”;如果你希望对CMWAP和CMNET有一个详细的了解,那么就读完全篇吧;如果你对这个问题有所研究的话,还请不吝赐教,解开仍旧困惑我的几个疑问。

Continue reading…

[ZT]Symbian OS s60 3rd编程中实现IMSI、IMEI查询

#ifndef MYTELEPHONY_H
#define MYTELEPHONY_H

#include 
#include 

class CMyTelephony : public CActive
{
public:
static void GetIMSIL(TDes& aIMSI);
static void GetIMEIL(TDes& aIMEI);
static void GetPhoneType(TDes& aPhoneType);
static void DialPhone(const TDesC& aPhoneId);
static CMyTelephony* NewL();
protected:
void DoCancel();
void RunL();

private:
static CMyTelephony* NewLC();

~CMyTelephony();
CMyTelephony();
void ConstructL();

void GetSubscriberId();
void GetPhoneId();

private:
CTelephony* iTelephony;
CTelephony::TCancellationRequest iRequest;
CTelephony::TSubscriberIdV1 iSubscriberId;
CTelephony::TSubscriberIdV1Pckg iSubscriberIdPckg;
CTelephony::TPhoneIdV1 iPhoneId;
CTelephony::TPhoneIdV1Pckg iPhoneIdPckg;
CTelephony::TCallId iCallId;
TBuf<32> iPhoneType;
public :
void DialNewCall(const TDesC& aTelNumber);
};

#endif // MYTELEPHONY_H

Continue reading…

Symbian IAP相关…

1.从CommDb中获取接入点信息:

 
CCommsDatabase*  DB=CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(DB);
CCommsDbTableView* view= DB->OpenIAPTableViewMatchingBearerSetLC(
ECommDbBearerGPRS|ECommDbBearerWLAN, //GPRS和无线局域网
ECommDbConnectionDirectionOutgoing); //方向无所谓的,写Unknown也可以
User::LeaveIfError(view->GotoFirstRecord()); //转到第一条记录

Continue reading…