package com.socioboard.t_board_pro.util;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.BitmapFactory;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import com.socioboard.t_board_pro.SplashActivity;
import com.socioboard.t_board_pro.twitterapi.TwitterRequestCallBack;
import com.socioboard.t_board_pro.twitterapi.TwitterUserGETRequest;
import com.socioboard.tboardpro.R;
public class FollowersNotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
System.out.println("++++++++++++++++++++++++++++++++++ FollowersNotificationReceiver +++++++++++++++++++ ");
final TboardproLocalData tboardproLocalData = new TboardproLocalData(
context);
SharedPreferences sharedPreferences = context.getSharedPreferences(
"twtboardpro", Context.MODE_PRIVATE);
final String userId = sharedPreferences.getString("userid", null);
if (userId != null) {
final ModelUserDatas userDatas = tboardproLocalData
.getUserData(userId);
myprint(userDatas);
// Tweet this post
TwitterUserGETRequest twitterUserGETRequest = new TwitterUserGETRequest(
userDatas, new TwitterRequestCallBack() {
@Override
public void onSuccess(JSONObject jsonObject) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(String jsonResult) {
// TODO Auto-generated method stub
myprint("onSuccess jsonResult");
ArrayList<String> listMyfollowersIDs = new ArrayList<String>();
try {
JSONObject jsonObject = new JSONObject(
jsonResult);
JSONArray jsonArray;
jsonArray = new JSONArray(jsonObject
.getString("ids"));
for (int i = 0; i < jsonArray.length(); ++i) {
listMyfollowersIDs.add(jsonArray
.getString(i));
}
ArrayList<String> oldIds = new ArrayList<String>();
try {
JSONObject jsonObjectTMp = new JSONObject(
tboardproLocalData
.getAllFollowersIDs(userDatas
.getUserid()));
JSONArray jsonArrayTmp;
jsonArrayTmp = new JSONArray(jsonObjectTMp
.getString("ids"));
for (int i = 0; i < jsonArrayTmp.length(); ++i) {
oldIds.add(jsonArrayTmp.getString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
ArrayList<String> tmpIds = (ArrayList<String>) differenciate(
listMyfollowersIDs, oldIds);
if (tmpIds.size() > 0) {
myprint("******* RCENT FOLLoWERS *******"
+ tmpIds.size());
notifyIt("You Have \"" + tmpIds.size()
+ "\" Recent Followers", context);
} else {
myprint("******* Not RCENT FOLLOWERS *******");
notifyIt("No New Followers Today", context);
}
tboardproLocalData.deleteAllFollowers(userId);
tboardproLocalData.addFollwersIds(jsonResult,
userId);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Exception e) {
// TODO Auto-generated method stub
myprint("onFailure Exception " + e);
if (e.toString().contains("429")) {
} else {
// * * * * * * ** * * * * *
AlarmManager alarmManagers;
alarmManagers = (AlarmManager) context
.getSystemService(context.ALARM_SERVICE);
Intent myIntent = new Intent(context,
FollowersNotificationReceiver.class);
PendingIntent pendingIntent = PendingIntent
.getBroadcast(
context,
5,
myIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
alarmManagers.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 3600000,
pendingIntent);
// * * * * * * ** * * * * *
}
}
});
String url = MainSingleTon.users_following_to_me_Ids;
List<BasicNameValuePair> peramPairs = new ArrayList<BasicNameValuePair>();
peramPairs.add(new BasicNameValuePair(Const.cursor, "-1"));
peramPairs.add(new BasicNameValuePair(Const.count, "5000"));
twitterUserGETRequest.executeThisRequest(url, peramPairs);
} else {
}
}
public List<String> differenciate(List<String> a, List<String> b) {
// difference a-b
List<String> c = new ArrayList<String>(a.size());
c.addAll(a);
c.removeAll(b);
return c;
}
public void myprint(Object msg) {
System.out.println(msg.toString());
}
void notifyIt(String notDetails, Context context) {
Intent intent1 = new Intent(context, SplashActivity.class);
intent1.setAction(Intent.ACTION_MAIN);
intent1.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent1,
0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
context);
mBuilder.setLargeIcon(BitmapFactory.decodeResource(
context.getResources(), R.drawable.ic_launcher));
mBuilder.setSmallIcon(R.drawable.notiicon);
mBuilder.setAutoCancel(true);
mBuilder.setTicker("Hey! you got new Followers.");
mBuilder.setContentIntent(pIntent);
mBuilder.setContentTitle("Recent Followers");
mBuilder.setContentText(notDetails);
Uri alarmSound = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(alarmSound);
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
}
}