如何从Qt代码启动MeeGo/Nokia N9中的视频套件?
从我的应用程序中启动诺基亚自己的视频播放器时,我遇到了一些问题,但我似乎无法解决这些问题 我的第一次尝试包括打电话如何从Qt代码启动MeeGo/Nokia N9中的视频套件?,qt,video,meego,Qt,Video,Meego,从我的应用程序中启动诺基亚自己的视频播放器时,我遇到了一些问题,但我似乎无法解决这些问题 我的第一次尝试包括打电话 Qt.openUrlExternally(url) 从QML和这似乎做得很好,除了它每次打开浏览器,并使用它而不是视频套件(本机播放器) 接下来,我尝试了cuteTube方法,我开始了如下新流程: QStringList args; args << url; QProcess *player = new QProcess(); connect(player, SIGN
Qt.openUrlExternally(url)
从QML和这似乎做得很好,除了它每次打开浏览器,并使用它而不是视频套件(本机播放器)
接下来,我尝试了cuteTube方法,我开始了如下新流程:
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);
QStringList参数;
args 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";
}
QList参数;
QStringList网址;
URL解决方案实际上比我最初想象的要简单;VideoSuiteInterface
-方法毕竟奏效了。所需要的只是正确地使用它。如果有人想亲自尝试,以下是完整的资料来源
player.h:
#ifndef PLAYER_H
#define PLAYER_H
#include <QObject>
#include <maemo-meegotouch-interfaces/videosuiteinterface.h>
class Player : public QObject {
Q_OBJECT
private:
VideoSuiteInterface* videosuite;
public:
Player(QObject *parent = 0);
Q_INVOKABLE void play(QString url);
};
#endif // PLAYER_H
#include "player.h"
#include <QObject>
#include <QStringList>
#include <QtDeclarative>
Player::Player(QObject *parent) : QObject(parent) {}
void Player::play(QString url) {
QList<QVariant> args;
QStringList urls;
urls << url;
args.append(urls);
videosuite = new VideoSuiteInterface();
videosuite->play(urls);
}
CONFIG += videosuiteinterface-maemo-meegotouch