Android 上開始使用 Java的 MQTT 用戶端

您可以安裝 Android 的 MQTT 用戶端範例 Java 應用程式 ,以與 MQTT 伺服器交換訊息。 應用程式使用來自 IBM®的 MQTT SDK 的用戶端程式庫。 您可以自行建置應用程式,或下載預先建置的範例應用程式。

開始之前

  • 如需支援及參照 MQTT 用戶端平台,請參閱 IBM Mobile Messaging 和 M2M Client Pack的系統需求
  • 如果用戶端與伺服器之間有防火牆,請確認它不會封鎖 MQTT 資料流量。
  • MQTT 用戶端範例應用程式在 Ice Cream Sandwich (Android 4.0) 及更新版本上運作。 此版本的 Android 也在平板電腦上提供更清晰的顯示解析度。

關於此作業

Android 的 MQTT 用戶端範例 Java 應用程式 稱為 mqttExerciser。 此應用程式使用 MQTT SDK 中的用戶端程式庫,並與 MQTT 伺服器交換訊息。

您可以自行建置範例應用程式,然後將它從 Eclipse 匯出為 mqttExerciser.apk,或使用預先建置的範例應用程式,該應用程式可作為檔案 mqttExerciser.apk ,位於 Mobile Messaging and M2M Client Packsdkroot\SDK\clients\android\samples\apks 資料夾中。 如果您選擇自行建置應用程式,則會自訂您所建置的開發環境,以將行動式傳訊併入應用程式 for Android。 如此應可協助您開始在自己的應用程式中包含行動式傳訊。

程序

  1. 選擇您可以連接用戶端應用程式的 MQTT 伺服器。

    伺服器必須支援 MQTT version 3.1 通訊協定。 IBM 中的所有 MQTT 伺服器都會這麼做,包括 IBM WebSphere® MQIBM MessageSight。 請參閱 開始使用 MQTT 伺服器

  2. 取得正確的工具。

    安裝 Java 開發套件 (JDK) 第 6 版或更新版本。 因為您正在開發 Java 應用程式 for Android,所以 JDK 必須來自 Oracle您可以從 Java SE 下載取得 JDK

    您也需要 Eclipse 開發環境。 這必須是 Eclipse 3.6.2 (Helios) 或更高版本。 Eclipse 必須至少具有 6 的 Java 編譯器層次,才能符合您的 JDK。 您可以從 Eclipse Foundation取得這一切。

    最後,您需要 Android SDK。 您可以從 取得 Android SDK取得此資訊。

  3. 下載 Mobile Messaging and M2M Client Pack 並安裝 MQTT SDK。
    沒有安裝程式,您只是展開了下載的檔案。
    1. 下載 Mobile Messaging and M2M Client Pack
    2. 建立您要安裝 SDK 的資料夾。

      您可能想將資料夾命名為 MQTT。 在這裡,此資料夾的路徑稱為 sdkroot

    3. 將壓縮的 Mobile Messaging and M2M Client Pack 檔案內容展開至 sdkroot。 展開會建立以 sdkroot\SDK 開頭的目錄樹。
  4. 選用: 建置 mqttExerciser 範例應用程式 for Android

    配置 EclipseAndroid 工具,並從 MQTT SDK 匯入並建置 mqttExerciser 專案。

    附註: 如果您現在不想這麼做,您可以使用預先建置的範例應用程式,此應用程式可作為檔案 mqttExerciser.apk ,位於 MQTT SDK 的 sdkroot\SDK\clients\android\samples\apks 資料夾中。
    1. 使用 JDK 中的 JRE 來啟動 Eclipse 開發環境。
      eclipse -vm "JRE path"
    2. Android SDK 選取並安裝一組套件和平台。
      如需 Google 建議的平台及套件清單,請參閱 新增平台及套件
      附註: SDK 平台必須是 Android API 層次 16 或更新版本。 使用較早的 API 層次,無法順利地編譯專案。
    3. Android Development Tools (ADT) 外掛程式 新增至 Eclipse
    4. 將範例 mqttExerciser 應用程式專案匯入至 Eclipse,並修正錯誤。
      1. 在路徑 sdkroot\SDK\clients\android\samples\mqttExerciser中,從 MQTT SDK 匯入範例應用程式專案。

        問題」視圖會列出許多建置錯誤。 您可以在接下來的幾個步驟中解決建置錯誤。

      2. org.eclipse.paho.client.mqttv3.jar 程式庫複製到 Android 專案中的 libs 資料夾。 Windows例如,在 Windows上,這是在 sdkroot\SDK\clients\java 資料夾下。 這時會顯示「檔案作業」視窗。 接受複製檔案選項,然後按一下確定
      3. 用滑鼠右鍵按一下專案資料夾 com.ibm.msg.android; 按一下 Android 工具 ... > 新增支援程式庫 ...。 閱讀並接受授權條款,然後按一下安裝
      4. 用滑鼠右鍵按一下專案資料夾 com.ibm.msg.android; 按一下 Android 工具 ... > 修正專案內容
      5. 如果工作區仍有大約 84 個錯誤(參閱置換超類別方法),則編譯器相符性層次可能設為 1.5 或更低。 Android SDK 第 16 版預期編譯器標準層次不會大於 1.5。 若要修正剩下的錯誤,請完成下列步驟:
        1. 檢查並 (必要的話) 將 Android SDK 及對應的 Eclipse 外掛程式更新至 Android SDK 第 17 版。
        2. 用滑鼠右鍵按一下 com.ibm.msg.android 專案資料夾,然後選取 內容 > Java 編譯器。 檢查編譯器相符性層次,將其設為至少 1.6,然後重建工作區。

    專案即已建置,會出現一些警告,但無錯誤。

  5. Android 裝置上安裝並啟動 MQTT 用戶端範例 Java 應用程式

    請參閱 developer.android.com 頁面 執行應用程式

    如果您自行建置應用程式作為 Eclipse 專案,則可以從 Eclipse啟動應用程式。

    如果您有應用程式套件 (APK) 檔案 mqttExerciser.apk,您可以使用 Android Debug Bridge (ADB) 安裝指令,在 Eclipse 外部安裝它。 此指令會將 APK 檔的位置當作引數。 如果您使用預先建置的範例應用程式,則位置為 sdkroot\SDK\clients\android\samples\apks\mqttExerciser.apk

  6. 使用 mqttExerciser 範例應用程式 for Android 來連接、訂閱及發佈至主題。
    1. 開啟 Android 的 MQTT 用戶端範例 Java 應用程式
      此視窗在 Android 裝置中開啟:
      應用程式範例起始畫面的畫面擷取。
    2. 連接至 MQTT 伺服器。
      1. 按一下 + 符號,以開啟新的 MQTT 連線。
        範例應用程式新連線畫面的畫面擷取
      2. 用戶端 ID 欄位中輸入任何唯一的 ID。 請耐心等待,按鍵速度可能緩慢。
      3. 伺服器 欄位中輸入 MQTT 伺服器的 IP 位址。

        此為您在第一個主要步驟中選擇的伺服器。 IP 位址不得為 127.0.0.1

      4. 輸入 MQTT 連線的埠號。

        一般 MQTT 連線的預設埠號是 1883

        已填寫欄位之範例應用程式新連線畫面的畫面擷取。
      5. 按一下連接
        如果連線成功,您會看到 正在連接 訊息,後面接著這個視窗:
        說明「已連接」之範例應用程式畫面的畫面擷取。
    3. 訂閱主題。
      1. 按一下已連接訊息。
        連線詳細資料」視窗會開啟,且會列出歷程:
        應用程式範例「連線詳細資料」畫面「歷程」標籤的畫面擷取。
      2. 按一下訂閱標籤,並輸入主題字串。
        應用程式範例「連線詳細資料」畫面「訂閱」標籤的畫面擷取。
      3. 按一下訂閱動作。

        隨即會出現一小段時間的已訂閱訊息。

      4. 按一下歷程標籤。
        歷程現在即已包含訂閱:
        應用程式範例「連線詳細資料」畫面「歷程」標籤的畫面擷取,顯示訂閱。
    4. 現在發佈至相同的主題。
      1. 按一下發佈標籤,輸入您訂閱時所輸入的相同主題字串。 輸入訊息。
        應用程式範例「連線詳細資料」畫面「發佈」標籤的畫面擷取。
      2. 按一下發佈動作。
        隨即會顯示一小段時間的兩個訊息,先是已發佈,然後是已訂閱。 發佈會顯示在狀態區中(將分隔線向下拉即可開啟狀態視窗)。
        範例應用程式狀態區域的畫面擷取。
      3. 按一下歷程標籤以檢視完整歷程。
        應用程式範例「連線詳細資料」畫面「歷程」標籤的畫面擷取。
    5. 中斷用戶端實例的連線。
      1. 按一下動作列中的功能表圖示。功能表圖示

        Android 的 MQTT 用戶端範例 Java 應用程式 會將 中斷連線 按鈕新增至 MQTT 連線詳細資料 視窗。

        應用程式範例「連線詳細資料」畫面「中斷連線」標籤的畫面擷取。
      2. 按一下中斷連線
        已連接狀態會變更為已中斷連線:
        應用程式範例「連線詳細資料」畫面「歷程」標籤的畫面擷取。
    6. 上一步 ,以回到 MQTT 用戶端範例 Java 應用程式 階段作業的清單。
      範例應用程式主畫面的畫面擷取,列出已中斷連線的階段作業。
      • 按一下加號以啟動新的 MQTT 用戶端範例 Java 應用程式 階段作業。
      • 按一下中斷連線的用戶端以重新連接。
      • 上一步回到啟動程式。
    7. 按一下作業按鈕以列出正在執行的應用程式。 找出 MQTT 用戶端範例 Java 應用程式。 滑動圖示使其脫離畫面,以關閉它。

下一步

如果您自己建置範例應用程式,則已準備好開始開發自己的 Android 應用程式,這些應用程式會呼叫 MQTT 程式庫來交換訊息。 您可以在 mqttExerciser中的類別上建立 Android 應用程式的模型。 如果要研究範例,請在 mqttExerciser 專案中為 com.ibm.msg.androidcom.ibm.msg.android.service 中的類別產生 Javadoc。