我对C++(不是C)有很好的了解,最近买了一部基于Symbian的手机.这让我有理由开始学习如何编程这个野兽.
我已经搜索过Symbian编程教程,但是有很多知识,很难选择最适合初创公司.
所以我要求提供关于从哪里开始嵌入式/ Symbian编程学习的提示和技巧,这将使我在这个主题上有所启动; 特别是如果你自己有这方面的知识.
谢谢.
我想进行Symbian编程,其功能要求应用程序使用标准自签名证书进行签名.我不想向mony支付证书,因为我不知道我是否会出售申请.有没有办法将读取和写入设备数据等功能授予我的应用程序以便在我的手机上使用?
我正在寻找Symbian S60第5版的工作代码示例,其中控制台应用程序可以接收断电事件(即检测电话关闭).我知道如何从UI应用程序[ AppUI
,HandleSystemEventL(const TWsEvent& aEvent)
等] 执行此操作,但如果简单的控制台应用程序正在侦听这些事件,则Windows Server似乎不会发送事件.
所以,我试图连接到WS,调用EventReady(&iStatus)
,但从RunL
未被调用,应用程序永远不会收到EApaSystemEventShutdown
.
这里有人可以为此提供工作代码吗?
谢谢.
我想在Qt中自定义列表视图,任何人都可以提供一些示例或提示如何做到这一点吗?我是Qt的新手.
有关于人们希望在其中分享的产品或事件的描述.这也可以是简单的文本或富文本.
他们正在研究哪种格式最适合此目的.他们希望看到尽可能多的手机兼容.我们谈论的是具有蓝牙功能的手机.
此外,文本长度超过SMS的长度,因此SMS格式不适合
你会推荐什么?
您认为在手机之间分享这种方式的最佳方式是什么?
我正在开发一个非常标准的Qt移动应用程序(用C++编写,针对Symbian设备),我发现有时当应用程序关闭时(即通过调用QApplication :: quit),应用程序中的最终析构函数可能需要很长时间才能返回(30秒加).我的意思是,析构函数中的所有清理操作都已完成(快速,一秒钟内完成)并且我们已经达到执行离开析构函数并返回到隐式调用它的代码的位置(即当我们删除时)物体).
很明显,在那一点上,我希望执行会在调用删除对象之后立即返回,但是正如我所说的那样,有时这已经过了一个年龄!
这个长时间关闭时间在调试和发布版本中都会发生,启用或禁用日志记录,所以我不认为这是一个因素.当我们到达析构函数的末尾时,我非常确定没有文件句柄保持打开状态,或者任何其他开放资源(网络连接等)......尽管它们肯定不会出现问题退出析构函数(?).
这是删除应用程序的QMainWindow对象.目前,执行此操作的调用是在连接到QApplication :: aboutToQuit的插槽中,尽管我也尝试在应用程序"main"函数中删除该对象.
我们遇到的延迟时间似乎与我们退出前应用中的活动量成正比.这种情况让我觉得内存泄漏可能是一个问题,但我们并不知道任何事情(当然并不意味着没有任何问题),而且我之前从未见过这种泄漏内存的行为.
有没有人想到这里会发生什么?
干杯
在最后几天调试多线程,其中一个线程正在删除另一个仍在使用的对象,我意识到如果我可以使'this'易变,问题会更容易和更快地诊断.它会将系统(Symbian OS)上的故障转储更改为更具信息性的内容.
那么,有什么理由不能或不应该是这样吗?
编辑:所以真的没有安全的方法来防止或检查这种情况.如果说访问过时类指针的一个解决方案是拥有一个保存指针的全局变量,并且调用的任何函数应该是使用全局变量替换'this'的静态函数,这是否正确?
static TAny* gGlobalPointer = NULL;
#define Harness static_cast<CSomeClass*>(gGlobalPointer);
class CSomeClass : public CBase
{
public:
static void DoSomething();
private:
int iMember;
};
void CSomeClass::DoSomething()
{
if (!Harness)
{
return;
}
Harness->iMember = 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果删除另一个线程并将全局指针置空,则会立即捕获它.
我认为这个问题的一个问题是,如果编译器缓存了Harness的值而不是每次使用时都检查它.
我尝试在QML中使用翻译.我开了一个新项目QtQuick项目,我选择QtQuick Componenets for Symbian作为QtQuick应用程序类型.Qt Creator创建了一个包含所有标准文件的应用程序源代码树(main.cpp,main.qml,mainpage.qml ...)
MainPage.qml非常简单:
import QtQuick 1.1
import com.nokia.symbian 1.1
Page {
id: mainPage
Text {
anchors.centerIn: parent
text: qsTr('Hello world!')
color: platformStyle.colorNormalLight
font.pixelSize: 20
}
}
Run Code Online (Sandbox Code Playgroud)
我的main.cpp文件看起来像这样实现QTranslator:
#include "qmlapplicationviewer.h"
#include <QTranslator>
#include <QPushButton>
#include <QDebug>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
QTranslator* translator = new QTranslator;
qDebug()<<"Translating: "<<translator->load(QString("qml/International/inter_en"));
app->installTranslator(translator);
//QPushButton hello(QPushButton::tr("Hello world!"));
// hello.resize(100, 30);
// hello.show();
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
viewer->setMainQmlFile(QLatin1String("qml/International/main.qml"));
viewer->showExpanded();
return app->exec();
}
Run Code Online (Sandbox Code Playgroud)
然后我运行lupdate mainpage.qml -ts inter_en.ts,我用语言学家来翻译POSIX表达式"Hello world!" 别的东西只是测试它正在翻译.然后我用语言学家创建了inter_en.qm文件.
但是当我在模拟器上运行应用程序时,我不会得到"Hello world!" …
我有两个用于音频的自定义 QML 元素,一个用于播放音乐(并扩展了 QML Audio 元素),一个用于播放声音效果(其扩展了 QML 的 SoundEffect 元素)。
我可以毫无问题地播放背景音乐,但是当我尝试播放音效时,界面会冻结几秒钟(音乐继续播放),然后当它解冻时,我会听到 Windows 错误声音。
这是我所拥有的(音乐具有类似的架构):
MySoundEffect.qml
Loader {
id: container
source: "MobilitySoundEffect.qml"
property bool valid: item !== null
property real audioVolume: 1.0
property int loops: 1
function initialise() {
if(valid) {
item.volume = container.audioVolume
item.loops = container.loops
}
}
function play(filename) { if(valid) item.play(filename); }
function stop() { if(valid) item.stop(); }
onLoaded: container.initialise()
onAudioVolumeChanged: if(valid) item.volume = audioVolume;
}
Run Code Online (Sandbox Code Playgroud)
移动音效.qml
Item {
id: container
property url source: ""
property real volume: …
Run Code Online (Sandbox Code Playgroud) 当默认接入点不起作用时,我想向用户提供一个对话框,其中包含可用的wlan接入点列表.根据该QNetworkConfiguration
参考,当配置类型为时UserChoice
,QNetworkSession::open
将弹出用于选择配置的对话框.但我的经验是N8(与Symbian Anna)就是这样
我使用的每个wifi接入点都显示为连接>设置>目标中"Internet"目标的一部分,
这导致只有一个配置QNetworkConfigurationManager::allConfigurations(QNetworkConfiguration::Discovered)
,其名称为"Internet"和类型ServiceNetwork
那么是否可以在N8中更改连接设置以获得具有UserChoice
类型的配置,它是否可以解决我的问题?
什么是使用户可以从Qt/QML应用程序连接到新的wlan访问点而无需进入设置的正确方法?