Como iniciar o vídeo-suite no MeeGo / Nokia N9 do Qt código?
Pergunta
Estou tendo problemas com o lançamento da Nokia próprio player de vídeo do meu pedido que eu apenas não parecem ser capazes de resolver.
Minha primeira tentativa de chamar incluído
Qt.openUrlExternally(url)
a partir de software livre, e que parecia fazer o truque tudo bem, exceto que é aberto o navegador de cada vez e é usado em vez do vídeo-suite (nativo do jogador).
Seguinte, eu tentei cuteTube -abordagem onde eu iniciar novo processo como este:
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);
Que trabalhou, exceto que é necessária vídeo-suite para ser fechado ao chamar o jogador->iniciar, caso contrário, ele não fez nada.
Minha terceira tentativa envolvidos iniciar o vídeo-suite através QDBus, mas que não funcione melhor:
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";
}
O problema com isso é que ele requer de vídeo-suite e autoStartService parâmetro não ajudou muito.Se o vídeo-suite não estiver em execução, já, a chamada abre-o bem, mas, infelizmente, nenhum vídeo começa a reproduzir.
Eventualmente, eu tentei usar também VideoSuiteInterface, mas, mesmo tendo o programa compilar com ele, parecia ser difícil.Quando eu finalmente consegui compilar e vincular todas as bibliotecas, os resultados não diferem opção 3 acima.
Então, existe uma maneira de usar VideoSuiteInterface diretamente ou através de DBus, para que ele possa iniciar a reprodução de vídeo, independentemente do estado atual do aplicativo?
Solução
A solução, na verdade, foi mais simples do que eu realmente pensei inicialmente;o VideoSuiteInterface
-abordagem trabalhou depois de tudo.Bastou para usá-lo corretamente.Aqui, são de total fontes, se alguém deseja experimentar a si mesmos.
jogador.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
player.cpp:
#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);
}
Além disso, você pode conectar-se alguns sinais para tornar a INTERFACE mais ágil, mas basicamente o que deve fazer o truque.
É necessário, finalmente, lembre-se de adicionar o seguinte ao seu .pro arquivo e você é bom para ir:
CONFIG += videosuiteinterface-maemo-meegotouch