How to get the current location and turn-off time of an outgoing call (exact call time)?

I want to get the location, time and date of an outgoing call in android.Here I use one broadcast receiver to detect new outgoing calls, in the broadcast receiver I launch one service that can implement a location receiver, to get the current location for each new outgoing call it will start up.

My question is:

  • I need the current location, time, date of outgoing call.

broadcast receiver

public class OutGoingCallReceiver extends BroadcastReceiver { public static String phoneNumber; @Override public void onReceive(Context context, Intent intent) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); if (state == null) { phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Intent serviceIntent = new Intent(context, NarenService.class); context.startService(serviceIntent); Toast.makeText(context, "Calling..to " + phoneNumber, Toast.LENGTH_SHORT).show(); } } } 

Service

 public class NarenService extends Service implements LocationListener { SQLiteDatabase db; double lat, lon; LocationManager locationManager; String provider; DataProvider dataProvider; Cursor cursor; private static final String TAG = "NarenService"; @Override public int onStartCommand(Intent intent, int flags, int startId) { getLocation(); // OutGoingCallReceiver.phoneNumber = str; // OutGoingCallReceiver outGoingCallReceiver = new OutGoingCallReceiver() dataProvider = new DataProvider(this); if (lon != 0.0 && lat != 0.0) { dataProvider.open(); dataProvider.insertEntry(lon, lat, OutGoingCallReceiver.phoneNumber); Log.v(TAG, "Inserted data"); // dataProvider.close(); Toast.makeText(getBaseContext(), "Lat : " + lat + "\n lon : " + lon + "\n num :" + OutGoingCallReceiver.phoneNumber, Toast.LENGTH_SHORT).show(); } stopSelf(); return START_STICKY; } @Nullable @Override public IBinder onBind(Intent intent) { return null; } private void getLocation() { locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); provider = locationManager.getBestProvider(criteria, false); if (provider != null && !provider.equals("")) { // Get the location from the given provider Location location = locationManager.getLastKnownLocation(provider); locationManager.requestLocationUpdates(provider, 60000, 10, this); if (location != null) { Log.v(TAG, "Entered into loc"); onLocationChanged(location); } else Toast.makeText(getBaseContext(), "Location can't be retrieved", Toast .LENGTH_SHORT).show(); } else { Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show(); } } @Override public void onLocationChanged(Location location) { lat = location.getLatitude(); lon = location.getLongitude(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onDestroy() { super.onDestroy(); // dataProvider.close(); Toast.makeText(this, "service stopped", Toast.LENGTH_SHORT).show(); } } 
+5
source share
2 answers

Use this code to end calls

 case TelephonyManager.CALL_STATE_IDLE: //Went to idle- this is the end of a call. What type depends on previous state(s) if(lastState == TelephonyManager.CALL_STATE_RINGING){ //Ring but no pickup- a miss onMissedCall(savedNumber, callStartTime); } else if(isIncoming){ onIncomingCallEnded(savedNumber, callStartTime, new Date()); } else{ onOutgoingCallEnded(savedNumber, callStartTime, new Date()); } break; 
+4
source

Google introduced the Fuse Location Provider api through its Google Play service platform, which is very easy to use than GPS / network address providers.

Compatibility up to API level 8, now that I get this strange problem with a network provider, at the same time, Fused Location gives me the exact location (without rebooting the device).

I completed one working project FusedLocation Test here, you can clone and test yourself.

LocationListener NETWORK_PROVIDER is enabled, but onLocationChanged is never called

+4
source

Source: https://habr.com/ru/post/1237225/


All Articles