/* * Copyright (c) 2013 by CDAC Chennai * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Copyright (c) 2014 by CDAC Chennai * @File LocationDataAnalysis * @Created: 22.04.2014 * @author: Rekha.N * Last Change: 22.04.2014 by Rekha.N * */ package com.contextawareframework.dataanalysis; import java.sql.Date; import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import android.os.Bundle; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.CallLog; import android.util.Log; import android.app.Activity; public class ApplicationDataAnalysis { public static String phoneno = null; public static String[] ar = new String[1000]; public static String[] ar1 = new String[1000]; public static String[] ar2 = new String[1000]; public static int i = 0; public static int l= 0; public static int m = 0; private Context _context; public ApplicationDataAnalysis (Context context) { this._context = context; } public StringBuffer getOutCallDetails() { Log.d("INSIDE METHOD CALL ::::", " INSIDE METHOD CALL :::" ); StringBuffer sb = new StringBuffer(); Cursor managedCursor = ((Activity) _context).managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null); int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); sb.append("Call Log :"); while (managedCursor.moveToNext()) { String phNumber = managedCursor.getString(number); String callType = managedCursor.getString(type); String callDate = managedCursor.getString(date); Date callDayTime = new Date(Long.valueOf(callDate)); String callDuration = managedCursor.getString(duration); String dir = null; int dircode = Integer.parseInt(callType); switch (dircode) { case CallLog.Calls.OUTGOING_TYPE: dir = "OUTGOING"; if(ar[i] == null) { ar[i] = phNumber; } i++; break; } } HashMap<String,Integer> duplicates = new HashMap<String,Integer>(); for(int j=0; j<ar.length; j++) { if(duplicates.containsKey(ar[j])) { int numberOfOccurances = duplicates.get(ar[j]); duplicates.put(ar[j], (numberOfOccurances + 1)); } else { duplicates.put(ar[j], 1); } } Log.d("DUPLICATES ENTRY ::::", "DUPLICATES ENTRY ::" + duplicates + ", DUPLICATES:: ENTRY " + duplicates); int temp = 0; String finalvalue = null; Set<String> keys = duplicates.keySet(); for(String key: keys) { if((key != null) && (temp < duplicates.get(key))) { temp = duplicates.get(key); finalvalue = key; } } Log.d("TEMP ::::", "TEMP ::" + temp + ", TEMP:: VALUE " + temp); Log.d("FINAL VALUE ::::", "FINAL VALUE ::" + finalvalue + ", FINAL VALUE " + finalvalue); sb.append("\nYou have made the maximum outgoing call from--- " + finalvalue + " \nNo of times " + temp); sb.append("\n----------------------------------"); return sb; } public StringBuffer getInCallDetails() { Log.d("INSIDE METHOD CALL ::::", " INSIDE METHOD CALL :::" ); StringBuffer sb1 = new StringBuffer(); Cursor managedCursor = ((Activity) _context).managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null); int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); sb1.append("Call Log :"); while (managedCursor.moveToNext()) { String phNumber = managedCursor.getString(number); String callType = managedCursor.getString(type); String callDate = managedCursor.getString(date); Date callDayTime = new Date(Long.valueOf(callDate)); String callDuration = managedCursor.getString(duration); String dir = null; int dircode = Integer.parseInt(callType); switch (dircode) { case CallLog.Calls.INCOMING_TYPE: dir = "INCOMING"; if(ar1[l] == null) { ar1[l] = phNumber; } l++; break; } } HashMap<String,Integer> duplicates = new HashMap<String,Integer>(); for(int j=0; j<ar1.length; j++) { if(duplicates.containsKey(ar1[j])) { int numberOfOccurances = duplicates.get(ar1[j]); duplicates.put(ar1[j], (numberOfOccurances + 1)); } else { duplicates.put(ar1[j], 1); } } Log.d("DUPLICATES ENTRY ::::", "DUPLICATES ENTRY ::" + duplicates + ", DUPLICATES:: ENTRY " + duplicates); int temp = 0; String finalvalue = null; Set<String> keys = duplicates.keySet(); for(String key: keys) { if((key != null) && (temp < duplicates.get(key))) { temp = duplicates.get(key); finalvalue = key; } } Log.d("TEMP ::::", "TEMP ::" + temp + ", TEMP:: VALUE " + temp); Log.d("FINAL VALUE ::::", "FINAL VALUE ::" + finalvalue + ", FINAL VALUE " + finalvalue); sb1.append("\nYou have got maximum incoming call from--- " + finalvalue + " \nNo of times " + temp); sb1.append("\n----------------------------------"); return sb1; } public StringBuffer getMissedCallDetails() { StringBuffer sb2 = new StringBuffer(); Cursor managedCursor = ((Activity) _context).managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null); int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); sb2.append("Call Log :"); while (managedCursor.moveToNext()) { String phNumber = managedCursor.getString(number); String callType = managedCursor.getString(type); String callDate = managedCursor.getString(date); Date callDayTime = new Date(Long.valueOf(callDate)); String callDuration = managedCursor.getString(duration); String dir = null; int dircode = Integer.parseInt(callType); switch (dircode) { case CallLog.Calls.MISSED_TYPE: // Log.d("INSIDE MISSED TYPE ::::", "INSIDE MISSED TYPE ::" + CallLog.Calls.MISSED_TYPE + ", INSIDE MISSED TYPE::: " + CallLog.Calls.MISSED_TYPE); dir = "MISSED"; if(ar2[m] == null) { ar2[m] = phNumber; } m++; break; } } HashMap<String,Integer> duplicates = new HashMap<String,Integer>(); for(int j=0; j<ar2.length; j++) { if(duplicates.containsKey(ar2[j])) { int numberOfOccurances = duplicates.get(ar2[j]); duplicates.put(ar2[j], (numberOfOccurances + 1)); } else { duplicates.put(ar2[j], 1); } } Log.d("DUPLICATES ENTRY ::::", "DUPLICATES ENTRY ::" + duplicates + ", DUPLICATES:: ENTRY " + duplicates); int temp = 0; String finalvalue = null; Set<String> keys = duplicates.keySet(); for(String key: keys) { if((key != null) && (temp < duplicates.get(key))) { temp = duplicates.get(key); finalvalue = key; } } Log.d("TEMP ::::", "TEMP ::" + temp + ", TEMP:: VALUE " + temp); Log.d("FINAL VALUE ::::", "FINAL VALUE ::" + finalvalue + ", FINAL VALUE " + finalvalue); sb2.append("\nYou have got maximum missed call from--- " + finalvalue + " \nNo of times " + temp); sb2.append("\n----------------------------------"); return sb2; } }