2014-11-17 6 views
0

Я следил за некоторым учебным пособием, чтобы узнать, как publish сообщение broker с устройства Android. Ниже приведена моя попытка, и на данный момент я не нашел методов, приведенных в учебнике, например, MqttDeliveryTokenAndroid, который не находится в библиотеке.Что касается публикации сообщения с использованием API Android aho

Пожалуйста, дайте мне знать, как правильно publish сообщение и предоставьте ссылку на недавно обновленный Pāho Android API, то один я работаю сейчас скачивается с Paho сайта и некоторые классы и методы и один я уже упоминал выше не хватает.

Код

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mqtt_proj_01_layout); 

    sdCard = Environment.getExternalStorageDirectory(); 
    folder = new File(sdCard + directory); 
    if (!folder.exists()) 
     folder.mkdir(); 

    final MqttClientPersistence persistenceDataDir = new MqttDefaultFilePersistence(folder.toString()); 

    final MqttAndroidClient client_1 = new MqttAndroidClient(getApplicationContext(), serverURI, 
    clientID, persistenceDataDir, Ack.AUTO_ACK); 
    MqttConnectOptions opts = new MqttConnectOptions(); 
    opts.setCleanSession(false); 
    opts.setWill(WILL_TOPIC, WILL_MSG.getBytes(), 1, true); 
    opts.setKeepAliveInterval(keepAliveInterval); 

    final MqttMessage msg = new MqttMessage("33".getBytes()); 
    msg.setQos(1); 
    msg.setRetained(false); 

    MqttDeliveryToken deliveryToken = new MqttDeliveryToken(); 

ответ

0

В NullPointerException потому, что подключения() вызывает асинхронный метод и вам необходимо реализовать ActionListener.

В случае успеха вы можете: подписаться и Публикация сообщений.

Log.i(LOGTAG, "MQTT Start"); 
    MemoryPersistence memPer = new MemoryPersistence(); 
    final MqttAndroidClient client = new MqttAndroidClient(context, "tcp://192.168.0.13:1883", username, memPer); 

    try { 
     client.connect(null, new IMqttActionListener() { 

      @Override 
      public void onSuccess(IMqttToken mqttToken) { 
       Log.i(LOGTAG, "Client connected"); 
       Log.i(LOGTAG, "Topics="+mqttToken.getTopics()); 

       MqttMessage message = new MqttMessage("Hello, I am Android Mqtt Client.".getBytes()); 
       message.setQos(2); 
       message.setRetained(false); 

       try { 
        client.publish("messages", message); 

        Log.i(LOGTAG, "Message published"); 

        client.disconnect(); 
        Log.i(LOGTAG, "client disconnected"); 
       } catch (MqttPersistenceException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (MqttException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 

      @Override 
      public void onFailure(IMqttToken arg0, Throwable arg1) { 
       // TODO Auto-generated method stub 
       Log.i(LOGTAG, "Client connection failed: "+arg1.getMessage()); 

      } 
     }); 

 Смежные вопросы

  • Нет связанных вопросов^_^