package net.homelinux.penecoptero.android.citybikes.receivers;
import java.util.HashMap;
import java.util.Map;
import net.homelinux.penecoptero.android.citybikes.app.MainActivity;
import net.homelinux.penecoptero.android.citybikes.app.R;
import net.homelinux.penecoptero.android.citybikes.app.RESTHelper;
import org.json.JSONObject;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings.Secure;
import android.util.Log;
public class C2DMReceiver extends BroadcastReceiver {
private static final int CITYBIKES_PUSH_ID = 1;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("C2DM", "New !!! Action: "+action);
Log.w("C2DM", "Registration Receiver called");
if ("com.google.android.c2dm.intent.REGISTRATION".equals(action)) {
Log.w("C2DM", "Received registration ID");
final String registrationId = intent
.getStringExtra("registration_id");
String error = intent.getStringExtra("error");
String deviceId = Secure.getString(context.getContentResolver(),
Secure.ANDROID_ID);
Log.d("C2DM", "device_id: "+deviceId);
Log.d("C2DM", "dmControl: registrationId = " + registrationId
+ ", error = " + error);
// TODO Send this to my application server
RESTHelper rHelper = new RESTHelper(false, "foo","bar");
Map <String, String> data = new HashMap<String, String>();
data.put("regId", registrationId);
data.put("devId", deviceId);
data.put("action","register");
try{
String response = rHelper.restPOST("http://laika.citybik.es:8282", data);
Log.d("C2DM", "Response from laika: "+response);
}catch (Exception e){
Log.d("C2DM","Error posting to laika");
}
} else if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
Log.w("C2DM", "Received message");
final String payload = intent.getStringExtra("payload");
Log.d("C2DM", "dmControl: payload = " + payload);
//Toast toast = Toast.makeText(context,payload,Toast.LENGTH_LONG);
//toast.show();
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
String stationName;
int stationId = -1;
try{
JSONObject station = new JSONObject(payload);
stationName = station.getString("name");
stationId = station.getInt("id");
Log.i("C2DM","Station id is "+Integer.toString(stationId));
} catch (Exception e){
stationName = "error";
}
int icon = R.drawable.icon;
CharSequence tickerText = "Your bike @ "+stationName+" is ready!";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND;
CharSequence contentTitle = "CityBikes station ready!";
CharSequence contentText = "Your bike @ "+stationName+" is ready!";
Intent notificationIntent = new Intent(context, MainActivity.class);
if (stationId != -1){
notificationIntent.putExtra("c2dm_station_id", stationId);
Log.i("C2DM","Putting extra to intent "+Integer.toString(stationId));
}
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
PendingIntent.FLAG_ONE_SHOT
+ PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notification.flags = Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(CITYBIKES_PUSH_ID, notification);
}
}
}