2017-11-16 3 views
0

MQTT 및 Android Studio를 배우고 있습니다. Android Studio에서 간단한 응용 프로그램을 만들고 싶지만 4 일이 지나면 계속해서 대처할 수 있습니다.MQTT Android Studio 및 Raspberry PI Broker

애플리케이션 설명 : 1 버튼 ---> 푸시 ---> Send to mqtt topic/message ("mqtt"/ "test") 그게 전부입니다.

Mqtt Broker = rpi (IP: namerpibrok.ddns.net) 

브로커 잘 작동하고 암호 또는 사용자 이름

문제를 필요로하지 않는다는 Aplication 함께 - 즉 안드로이드 스튜디오 내 첫 작품이다. 내가 버튼을 누르면 https://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service

지금, .... 아무 일도 발생하지 않습니다 : 페이지에 설명 된대로

나는 모든 것을했다.

MqttAndroidClient client; 

    private static final String TAG = "LOG"; 

    // Used to load the 'native-lib' library on application startup. 
static { 
    System.loadLibrary("native-lib"); 
} 

    private Object bytes; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    String clientId = MqttClient.generateClientId(); 
    client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId); 

     MqttConnectOptions options = new MqttConnectOptions(); 

    try { 
     IMqttToken token = client.connect(options); 
     token.setActionCallback(new IMqttActionListener() { 
      @Override 
      public void onSuccess(IMqttToken asyncActionToken) { 
       // We are connected 
            Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 

      @Override 
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
       // Something went wrong e.g. connection timeout or firewall problems 
       Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } catch (MqttException e) { 
     e.printStackTrace(); 
    } 
} 



    MqttAndroidClient client; 

    private static final String TAG = "LOG"; 

    // Used to load the 'native-lib' library on application startup. 
static { 
    System.loadLibrary("native-lib"); 
} 

    private Object bytes; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    String clientId = MqttClient.generateClientId(); 
    client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId); 

     MqttConnectOptions options = new MqttConnectOptions(); 

    try { 
     IMqttToken token = client.connect(options); 
     token.setActionCallback(new IMqttActionListener() { 
      @Override 
      public void onSuccess(IMqttToken asyncActionToken) { 
       // We are connected 
            Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 

      @Override 
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
       // Something went wrong e.g. connection timeout or firewall problems 
       Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } catch (MqttException e) { 
     e.printStackTrace(); 
    } 
} 

public void pub(View v) 
 
{ 
 
    String topic = "mqtt"; 
 
    String payload = "mqtt"; 
 
    byte[] encodedPayload = new byte[0]; 
 
    try { 
 
     encodedPayload = payload.getBytes("UTF-8"); 
 
     MqttMessage message = new MqttMessage(encodedPayload); 
 
     client.publish(topic, message); 
 
    } catch (UnsupportedEncodingException | MqttException e) { 
 
     e.printStackTrace(); 
 
    } 
 
    } 
 

 
    }

사람이 내가 잘못 뭘하는지 말해 줄래?

+0

나를

String topic = "mqtt"; MqttMessage message = new MqttMessage(); message.setPayload("Message from IoT dev".getBytes()); client.publish(topic, message); 

당신이 뒤 전화를받을 수있는 근무하고 비트를 재 진술한다. – abarisone

+0

로그는 무엇을 표시합니까? – hardillb

답변

0

이 코드는 오타를 수정했습니다

client.setCallback(new IoTCallbacks() { 
       @Override 
       public void connectionLost(Throwable cause) { 

       } 

       @Override 
       public void messageArrived(String topic, MqttMessage message) throws Exception { 

       } 

       @Override 
       public void deliveryComplete(IMqttDeliveryToken token) { 

       } 
      });