Qt for Android開發執行個體教程_Android

來源:互聯網
上載者:User

本文講述了使用Qt5.3.0開發Android應用的方法,由於官方資料較少,此處記錄開發過程遇到的問題及解決方案。具體步驟如下:

1.Android平台的視頻播放,只能使用qml的MediaPlayer

2.qml中控制項的路徑必須加file://  例如:

Image{  source: "file:///mnt/usbhost1/Config/logo.png"}

3.C++與qml中js的方法互調

QQuickView view;view.setSource(QUrl(QStringLiteral("qrc:///qml/MainView.qml")));QObject *qmlObj =(QObject*) view.rootObject();MainWnd *w=new MainWnd(object);//暴露C++類給qml供其調用,別名mainWndClassview.engine ()->rootContext ()->setContextProperty (QLatin1String("mainWndClass"),w);//c++調用qml中的js方法//參數必須轉換為QVariantQMetaObject::invokeMethod (qmlObj,"showRight",Q_ARG(QVariant,1));//調用子項的js方法qmlPlayer = qmlObj->findChild<QObject*>("playerArea");QMetaObject::invokeMethod (qmlPlayer,"setVideoFile",Q_ARG(QVariant,currentVideoFile));
//MainView.qmlRectangle {  anchors.fill: parent  property int leftAreaWidth: this.width/5*4  property int rightAreaWidth: this.width/5  property int queueFontSize  function showRight(isShow){    ....  }  Player{    id:playerArea    //設定objectName,在c++中才能找到它    objectName: "playerArea"    width: parent.width    height: parent.height  }}

4.c++調用java Android api

在項目目錄下建立目錄\android\src\org\rophie\ProjectName\JavaClass.java 

org\rophie\ProjectName即為java類的包名package org.rophie.ProjectName;

如我調用Android API調節系統音量

package org.rophie.ProjectName;import org.qtproject.qt5.android.bindings.QtActivity;import android.widget.Toast;import android.media.AudioManager;import android.content.Context;public class JavaClass extends QtActivity{  private static JavaClass m_instance;  private static AudioManager mAudioManager;  public JavaClass()  {    //建構函式必須    m_instance = this;  }   public static void setVolume(int vol){   if(mAudioManager==null){     mAudioManager = (AudioManager)m_instance.getSystemService(Context.AUDIO_SERVICE);   }     mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, vol, 0);   }}

C++調用:

QAndroidJniObject::callStaticMethod<void>("org/rophie/ProjectName/JavaClass","setVolume","(I)V",3); //具體參照QAndroidJniObject類

5.BroadcastReceiver實現開機自啟,和Android一模一樣

public void onReceive(Context context, Intent intent) { ...... //JavaClass為繼承QtActivity的java主類 Intent intent2 = new Intent(context, JavaClass.class); ......}

6.調用第三方jar包,在src同級目錄下建立目錄libs,將.jar拷入即可使用

希望本文所述方法對大家的Android開發有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.