Domanda

Sto avendo problemi con il lancio di Nokia del proprio lettore video dalla mia domanda che ho appena non sembrano essere in grado di risolvere.

Il mio primo tentativo di chiamata incluso

Qt.openUrlExternally(url)

da QML e che sembrava fare il trucco bene, tranne che si apre il browser ogni volta e utilizzarlo al posto del video-suite (giocatore nativo).

Poi ho provato cuteTube -approccio in cui inizio a un nuovo processo come questo:

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);

Che ha funzionato, tranne che necessitavano di video-suite chiuso al richiamo giocatore->start, altrimenti non ha fatto nulla.

Il mio terzo tentativo coinvolti all'inizio del video-suite via QDBus, ma che non ha funzionato meglio:

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";
}

Il problema con questo è che richiede una video-suite e autoStartService parametro non aiutano.Se il video-suite non è già in esecuzione, la chiamata si apre bene ma, ahimè, non c'è video inizia la riproduzione.

Alla fine ho provato ad usare anche VideoSuiteInterface, ma anche avendo la compilazione di un programma sembrava essere difficile.Quando finalmente riuscii a compilare e collegare tutte le relative librerie, i risultati non differiscono dall'opzione 3 di cui sopra.

Così, c'è un modo per utilizzare VideoSuiteInterface direttamente o tramite DBus in modo che potesse iniziare la riproduzione video indipendentemente dallo stato corrente dell'applicazione?

È stato utile?

Soluzione

La soluzione è in realtà più semplice di quanto pensavo inizialmente;il VideoSuiteInterface -approccio ha funzionato, dopo tutto.È bastato usarlo correttamente.Qui sono a totale fonti qualcuno dovrebbe voler provare se stessi.

giocatore.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);
}

Inoltre, è possibile collegare alcuni segnali di rendere l'interfaccia più reattiva, ma in fondo che dovrebbe fare il trucco.

Infine, è necessario ricordarsi di aggiungere il seguente .pro file e vi sono buone per andare:

CONFIG += videosuiteinterface-maemo-meegotouch
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top