From cc8ace92f17c8e5aef7d68ff316e5cd038cd36b5 Mon Sep 17 00:00:00 2001 From: Nathan Lasseter Date: Wed, 22 May 2013 15:34:00 +0100 Subject: Initial Commit --- src/user4574/texttransport/AndroidPersistence.java | 50 ++++++++++++++++++++++ src/user4574/texttransport/SMSReceiver.java | 26 +++++++++++ src/user4574/texttransport/Start.java | 41 ++++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 src/user4574/texttransport/AndroidPersistence.java create mode 100644 src/user4574/texttransport/SMSReceiver.java create mode 100644 src/user4574/texttransport/Start.java (limited to 'src/user4574') diff --git a/src/user4574/texttransport/AndroidPersistence.java b/src/user4574/texttransport/AndroidPersistence.java new file mode 100644 index 0000000..66f9dd3 --- /dev/null +++ b/src/user4574/texttransport/AndroidPersistence.java @@ -0,0 +1,50 @@ +package user4574.texttransport; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Vector; + +import org.eclipse.paho.client.mqttv3.MqttClientPersistence; +import org.eclipse.paho.client.mqttv3.MqttPersistable; +import org.eclipse.paho.client.mqttv3.MqttPersistenceException; + +public class AndroidPersistence implements MqttClientPersistence { + + private HashMap store; + + public AndroidPersistence() { + store = new HashMap(); + } + + public void clear() throws MqttPersistenceException { + store.clear(); + } + + public void close() throws MqttPersistenceException { + store = null; + } + + public boolean containsKey(String arg0) throws MqttPersistenceException { + return store.containsKey(arg0); + } + + public MqttPersistable get(String arg0) throws MqttPersistenceException { + return store.get(arg0); + } + + public Enumeration keys() throws MqttPersistenceException { + return new Vector(store.keySet()).elements(); + } + + public void open(String arg0, String arg1) throws MqttPersistenceException { + store = new HashMap(); + } + + public void put(String arg0, MqttPersistable arg1) throws MqttPersistenceException { + store.put(arg0, arg1); + } + + public void remove(String arg0) throws MqttPersistenceException { + store.remove(arg0); + } +} diff --git a/src/user4574/texttransport/SMSReceiver.java b/src/user4574/texttransport/SMSReceiver.java new file mode 100644 index 0000000..c313b0f --- /dev/null +++ b/src/user4574/texttransport/SMSReceiver.java @@ -0,0 +1,26 @@ +package user4574.texttransport; + +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttTopic; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.telephony.SmsMessage; + +public class SMSReceiver extends BroadcastReceiver { + public void onReceive(Context context, Intent intent) { + Bundle pdusBundle = intent.getExtras(); + Object[] pdus = (Object[]) pdusBundle.get("pdus"); + SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[0]); + try { + if (Start.client != null) { + MqttTopic t = Start.client.getTopic("/texttransport/" + message.getOriginatingAddress().substring(1) + "/received"); + t.publish(message.getMessageBody().getBytes(), 2, false); + } + } catch (MqttException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/user4574/texttransport/Start.java b/src/user4574/texttransport/Start.java new file mode 100644 index 0000000..03ea032 --- /dev/null +++ b/src/user4574/texttransport/Start.java @@ -0,0 +1,41 @@ +package user4574.texttransport; + +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.eclipse.paho.client.mqttv3.MqttTopic; + +import android.app.Activity; +import android.os.Bundle; +import android.telephony.SmsManager; + +public class Start extends Activity implements MqttCallback { + + public static MqttClient client; + private SmsManager sms = SmsManager.getDefault(); + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + try { + client = new MqttClient("tcp://192.168.0.222:1883", MqttClient.generateClientId(), new AndroidPersistence()); + client.setCallback(this); + client.connect(); + client.subscribe("/texttransport/+/send"); + } catch (MqttException e) { + e.printStackTrace(); + } + + setContentView(R.layout.start); + } + + public void connectionLost(Throwable exception) {} + public void deliveryComplete(MqttDeliveryToken token) {} + public void messageArrived(MqttTopic topic, MqttMessage message) throws Exception { + String[] topicarr = topic.getName().split("/"); + sms.sendTextMessage(topicarr[2], null, message.toString(), null, null); + } + +} \ No newline at end of file -- cgit v1.2.1