【发布时间】:2012-02-29 18:11:01
【问题描述】:
我在从我的应用程序启动诺基亚自己的视频播放器时遇到问题,我似乎无法解决。
我的第一次尝试包括打电话
Qt.openUrlExternally(url)
来自 QML,这似乎可以解决问题,只是它每次都打开浏览器并使用它而不是视频套件(本机播放器)。
接下来我尝试了 cuteTube -approach,我开始这样的新流程:
QStringList args;
args << url;
QProcess *player = new QProcess();
connect(player, SIGNAL(finished(int, QProcess::ExitStatus)), player, SLOT(deleteLater()));
player->start("/usr/bin/video-suite", args);
这行得通,只是它需要在调用 player->start 时关闭视频套件,否则它什么也不做。
我的第三次尝试涉及通过 QDBus 启动视频套件,但效果并不好:
QList<QVariant> args;
QStringList urls;
urls << url;
args.append(urls);
QDBusMessage message = QDBusMessage::createMethodCall(
"com.nokia.VideoSuite",
"/",
"com.nokia.maemo.meegotouch.VideoSuiteInterface",
"play");
message.setArguments(args);
message.setAutoStartService(true);
QDBusConnection bus = QDBusConnection::sessionBus();
if (bus.isConnected()) {
bus.send(message);
} else {
qDebug() << "Error, QDBus is not connected";
}
问题在于它需要视频套件启动并运行 - autoStartService 参数也没有帮助。如果 video-suite 尚未运行,则呼叫可以正常打开它,但是,唉,没有视频开始播放。
最终我也尝试使用VideoSuiteInterface,但即使使用它编译程序似乎也很困难。当我最终设法编译和链接所有相关库时,结果与上面的选项 3 没有什么不同。
那么,有没有办法直接使用 VideoSuiteInterface 或通过 DBus 来播放视频,而不管应用程序的当前状态如何?
【问题讨论】: