1 package org.pileus.spades;
6 import android.app.Notification;
7 import android.app.PendingIntent;
8 import android.app.Service;
9 import android.content.Intent;
10 import android.os.IBinder;
11 import android.os.Messenger;
13 public class Task extends Service implements Runnable
16 public static final int REGISTER = 0;
17 public static final int MESSAGE = 1;
20 private String server = "irc.freenode.net";
21 private String nickname = "andydroid";
22 private String channel = "#rhnoise";
23 private int port = 6667;
26 private Messenger messenger = null;
27 private Thread thread = null;
28 private Socket socket = null;
29 private Client client = null;
34 Os.debug("Task: setup");
36 this.socket = new Socket(server, port);
37 this.client = new Client(server, nickname, channel);
38 Os.debug("Task: Socket and client created");
39 } catch(Exception e) {
40 Os.debug("Task: Failed to create socket: " + e);
45 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
46 PrintWriter output = new PrintWriter(socket.getOutputStream());
47 this.client.connect(input, output);
48 Os.debug("Task: Client connected");
49 } catch (Exception e) {
50 Os.debug("Task: Failed to create readers writers: " + e);
55 private void command(int cmd, Object value)
58 android.os.Message msg = android.os.Message.obtain();
61 this.messenger.send(msg);
62 } catch (Exception e) {
63 Os.debug("Task: error sending message");
68 public Message send(String txt)
70 if (this.client == null && !this.client.running)
72 return this.client.send(txt);
75 /* Runnable methods */
79 Os.debug("Task: thread run");
81 while (client.running)
82 this.command(MESSAGE, client.recv());
83 Os.debug("Task: thread exit");
88 public void onCreate()
90 Os.debug("Task: onCreate");
93 /* Setup notification bar */
94 Notification note = new Notification(android.R.drawable.presence_online, null, 0);
95 Intent intent = new Intent(this, Main.class);
96 PendingIntent pend = PendingIntent.getActivity(this, 0, intent, 0);
98 note.setLatestEventInfo(this, "Spades Title", "Spades Message", pend);
99 startForeground(1, note);
101 /* Start client thread */
102 thread = new Thread(this);
107 public void onDestroy()
109 Os.debug("Task: onDestroy");
114 public void onStart(Intent intent, int startId)
116 Os.debug("Task: onStart");
117 super.onStart(intent, startId);
118 this.messenger = (Messenger)intent.getExtras().get("Messenger");
119 this.command(REGISTER, this);
123 public IBinder onBind(Intent intent)
125 Os.debug("Task: onBind");