diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-01-26 17:29:37 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-01-26 17:29:37 +0100 |
commit | d11cd76a7f64262424687421a1d78496dde356fe (patch) | |
tree | 6cc81e899f50afe0b55e6037c98cfa260167a7ac /same-android/src/main/java/com/orbekk/discovery/SameService.java | |
parent | c2c1e4c5aad74a7fbca5c281f9d8ea2d0ba99ad3 (diff) |
Rename DiscoveryService => SameService.
Diffstat (limited to 'same-android/src/main/java/com/orbekk/discovery/SameService.java')
-rw-r--r-- | same-android/src/main/java/com/orbekk/discovery/SameService.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/same-android/src/main/java/com/orbekk/discovery/SameService.java b/same-android/src/main/java/com/orbekk/discovery/SameService.java new file mode 100644 index 0000000..149b882 --- /dev/null +++ b/same-android/src/main/java/com/orbekk/discovery/SameService.java @@ -0,0 +1,76 @@ +package com.orbekk.discovery; + +import java.net.DatagramPacket; + +import android.app.Service; +import android.content.Intent; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.widget.Toast; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SameService extends Service { + private Logger logger = LoggerFactory.getLogger(getClass()); + private Thread discoveryThread = null; + + public final class DiscoveryThread extends Thread { + Broadcast broadcast; + + public DiscoveryThread() { + broadcast = new Broadcast(SameService.this); + } + + @Override public void run() { + while (!Thread.interrupted()) { + byte[] data = new byte[1024]; + DatagramPacket packet = broadcast.receiveBroadcast(15066); + String content = new String(packet.getData(), 0, packet.getLength()); + Message message = Message.obtain(); + message.obj = content; + toastHandler.sendMessage(message); + } + } + + @Override public void interrupt() { + super.interrupt(); + broadcast.interrupt(); + } + } + + private Handler toastHandler = new Handler() { + @Override public void handleMessage(Message message) { + Toast.makeText(SameService.this, + (String)message.obj, Toast.LENGTH_SHORT) + .show(); + logger.info("Display toast: {}", (String)message.obj); + } + }; + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Toast.makeText(this, "service start: " + intent.getAction(), + Toast.LENGTH_SHORT).show(); + if (discoveryThread == null) { + synchronized (this) { + discoveryThread = new DiscoveryThread(); + discoveryThread.start(); + } + } + return START_STICKY; + } + + @Override + public void onDestroy() { + Toast.makeText(this, "service stopped", Toast.LENGTH_SHORT).show(); + discoveryThread.interrupt(); + } + +} |