Как начать видео-люкс в Meego / Nokia N9 из QT-кода?

StackOverflow https://stackoverflow.com/questions/9504413

  •  14-11-2019
  •  | 
  •  

Вопрос

У меня проблемы с запуском собственного видеоплеер Nokia из моего приложения, которые я просто не смогу решить.

Моя первая попытка включена вызывая

Qt.openUrlExternally(url)
.

от Qml и, казалось, что сделали трюк просто в порядке, за исключением того, что он открыл браузер каждый раз и использовал его вместо видео-сутки (родной плеер).

Далее я попробовал CuteTube -apprach, где я начинаю новый процесс, как это:

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

Это сработало, за исключением того, что требуется закрытие видео, чтобы быть закрытым при вызове проигрывателя-> начать, в противном случае это ничего не сделало.

Моя третья попытка вовлечена запуск видео-влюбления через QDBU, но это не работает лучше:

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 Parameter тоже не помог. Если Video-Suite уже не работает, вызов открывает его просто хорошо, но, увы, видео не начинает играть.

В конце концов я пытался использовать также Видеовидетьинтера , но даже имея компиляцию программы, казалось, было сложно. Когда я в конечном итоге удалось компилировать и связать все соответствующие библиотеки, результаты не отличались от опции 3 выше.

Итак, есть ли способ использовать видео видео непосредственно или через DBU, чтобы он запустил воспроизведение видео независимо от текущего состояния приложения?

Это было полезно?

Решение

The solution was actually simpler than I really thought initially; the VideoSuiteInterface -approach worked after all. All it took was to use it properly. Here are the full sources should anyone want to try it themselves.

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

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

In addition you may want to connect some signals to make the UI more responsive, but basically that should do the trick.

Finally, you need to remember to add following to your .pro file and you are good to go:

CONFIG += videosuiteinterface-maemo-meegotouch
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top