LoginSignup
6
7

More than 5 years have passed since last update.

AndroidのMQTTクライアント作成

Last updated at Posted at 2015-10-18

Pahoを使います。
必要なライブラリは二つ。

  • org.eclipse.paho.client.mqttv3-1.0.x.jar
  • org.eclipse.paho.android.service.jar

Pure Javaでは上のライブラリのみで動作しますが、Androidの場合サービスとして動作させる下のライブラリが必要になります。

利用するためには、AndroidManifest.xmlを変更します。

AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • android.permission.WAKE_LOCK

    Sleep時でも動作させるために、使っているみたいです。
    記述しないとエラーが出ました。

  • android.permission.INTERNET

    まあ外部接続するならMQTTならずとも必須でしょう

  • android.permission.WRITE_EXTERNAL_STORAGE

    なぜ必要かわかりません、もしかしたら不要?

  • android.permission.ACCESS_NETWORK_STATE"

    これも使いそうではありますが、どうやって使われているのかは不明

あと当然ながらServiceも追加する必要があります。

AndroidManifest.xml
<service android:name="org.eclipse.paho.android.service.MqttService" />

あと注意するところもうひとつ。
MqttAndroidClient.connect()
これはサービスへの接続なので、非同期になります。
完了しないとpublish()などができません。publish()を呼び出してもNullPointerExceptionになってしまいます。
AndroidではonCreate(), onDestroy()あたりでconnect(), disconnect()を呼び出してやる必要がありそうですね。
具体的なソースコードはそのうち公開します。

[参考URL(ほとんどここを参考にしました)](http://minor.hatenablog.com/entry/2015/02/15/2147300)削除されてしまっていました

MyMQTTなるアプリもある
https://play.google.com/store/apps/details?id=at.tripwire.mqtt.client

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7