2012-02-29 62 views
4

我遇到了從我的應用程序啓動諾基亞自己的視頻播放器的問題,我似乎無法解決。如何從Qt代碼啓動MeeGo/Nokia N9的視頻套件?

我第一次嘗試包括調用

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

這工作,但它需要的視頻套件,在調用播放器 - >啓動被關閉,否則什麼也沒做。

我第三次參與首發通過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參數也沒有幫助。如果視頻套件尚未運行,通話就會打開,但唉,沒有視頻開始播放。

最後,我嘗試使用也VideoSuiteInterface,但即使有程序編譯它似乎很困難。當我最終設法編譯並鏈接所有相關的庫時,結果與上述選項3沒有區別。

那麼,有沒有直接或通過的DBus請使用VideoSuiteInterface以便它會開始視頻播放,無論應用程序的當前狀態的一種方式?

回答

1

的解決方案是不是我真的以爲最初其實更簡單;畢竟,VideoSuiteInterface -approach工作。所需要的只是正確使用它。如果有人想自己嘗試,這裏有完整的資源。

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

此外,您可能需要連接一些信號,使用戶界面更加敏感,但基本上應該做的伎倆。

最後,你需要記住以下添加到您的.pro文件,你是好去:

CONFIG += videosuiteinterface-maemo-meegotouch