Chcę uzyskać lokalizację i godzinę i datę połączenia wychodzącego w Androidzie. Tutaj używam jednego odbiornika do wykrywania nowych połączeń wychodzących, w odbiorniku transmisji uruchamiam jedną usługę, która może zaimplementować odbiornik lokalizacji, aby uzyskać bieżącą lokalizację dla każdego nowego połączenia wychodzącego, uruchomi się.Jak uzyskać aktualną lokalizację i czas połączenia wychodzącego (dokładny czas połączenia)?
Moje pytanie brzmi:
- chcę bieżącą lokalizację, czas, datę połączenia wychodzącego.
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();
}
}
}
usługi
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();
}
}
obserwować tą farbę dla większej jasności http://stackoverflow.com/questions/21990947/detect- koniec-of-an-answer-incoming-call-by-user-in-android-not-inclined –