2012-02-29 6 views
4

アプリケーションからノキア独自のビデオプレーヤーを起動する際に問題がありますが、解決できないようです。MeeGo/Nokia N9でビデオスイートをQtコードから起動する方法は?

私の最初の試みは、QMLから

Qt.openUrlExternally(url) 

を呼び出す含まれており、それはそれは、ブラウザを毎回開いたことを除いて、うまくトリックを行うように見えたし、ビデオ・スイート(ネイティブプレイヤー)の代わりにそれを使用しました。それ以外の場合は何もしなかった、それはビデオスイートを必要とすることを除いて、働いていた

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

は開始> player-呼び出し時にクローズする:

次は私がcuteTubeを試みたアプローチ - 私はこのような新しいプロセスを開始するところ。

私の第三の試みは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と変わりませんでした。

VideoSuiteInterfaceを直接またはDBusを使用してアプリケーションの現在の状態に関係なくビデオ再生を開始する方法がありますか?

答えて

1

解決策は私が実際に最初に思っていたよりも実際に簡単でした。結局のところ、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 

player.cpp:

あなたはUIの応答性にするために、いくつかの信号を接続したいかもしれませんが、基本的にそれはトリックを行う必要があります加えて
#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 
関連する問題