私は Android とサービスが初めてです。私の目標は、サブスクリプションを設定し、トピック文字列に関する出版物を作成できるようにすることです。トピック文字列とクライアント ID は、テキスト フィールドの入力を解析した後に設定されます。私はPaho MQTT サービスを使用しています(ソースをダウンロードして JAR をビルドしました)。
次の場合、 で Null ポインタ例外が発生しc.publish()
ます。は、配信トークンが取得されているメソッドでのlogcat
例外を示しています。IMqttDeliveryToken publish(String topic, MqttMessage message, Object userContext, IMqttActionListener callback)
MqttAndroidClient
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set locale;
l = getResources().getConfiguration().locale;
}
@Override
protected void onResume() {
super.onResume();
addButtonListener();
}
private void addButtonListener() {
Button submitButton = (Button) findViewById(R.id.buttonSubmit);
submitButton.setOnClickListener(new OnClickListener() {
// ...
// validation code for fields in layout
// ...
// Finally, this.
MemoryPersistence mPer = new MemoryPersistence();
String clientId = UUID.randomUUID().toString();
String brokerUrl = "tcp://m2m.eclipse.org:1883";
MqttAndroidClient c = new MqttAndroidClient(getApplicationContext(), brokerUrl, clientId, mPer);
try {
c.connect();
String topic = "transfers/topic";
String msg = "topic payload"
MqttMessage m = new MqttMessage();
m.setPayload(msg.getBytes());
m.setQos(2);
m.setRetained(false);
c.publish(topic, m);
} catch (MqttException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
このサービスを使用して発行および購読する方法を教えてください。サンプル プロジェクト (Paho Android から) を参照しました。LWT のレイアウト ( activity_publish.xml
) はパブリケーションにも使用されているようで、LWT とパブリッシュはマージされているようです。