androidgpsgeolocationgoogle-maps-android-api-2gprs

How to get location of android device by its android id


I am new in android and recently start learning about Android and I am trying to get location of any android device by its unique android id. By that I can track the approx or exact location either by GPS or network provider. In detail I mean to say that whenever i enter any Android id in my app i can get device location in my application. Thanks for your kind help.


Solution

  • Finally I am able to do with this code:

    public class MyService extends Service implements LocationListener{
    String GPS_FILTER = "";
    Thread triggerService;
    LocationListener locationListener;
    LocationManager lm;
    private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meter
    
    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000 * 60 * 3; // 1 minute
    protected LocationManager locationManager;
    boolean isRunning = true;
    
    Calendar cur_cal = Calendar.getInstance();
    
    Location location;
    double latitude; // latitude
    double longitude;
    UserFunctions userFunction;
    private JSONObject json;
    private AlertDialogManager alert = new AlertDialogManager();
    
    private static String KEY_SUCCESS = "success";
    private static String KEY_ERROR = "error";
    private static String KEY_ERROR_MSG = "error_msg";
    private static String KEY_FLAG = "flag";
    String android_id ;
    String userName;
    
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        Intent intent = new Intent(this, MyService.class);
        PendingIntent pintent = PendingIntent.getService(getApplicationContext(),
                0, intent, 0);
        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    
        android_id = Settings.Secure.getString(getContentResolver(),
                    Settings.Secure.ANDROID_ID);
        if (getAccount() != null) {
            userName = getAccount();
        }
    
        GPS_FILTER = "MyGPSLocation";
        // locationManager = (LocationManager)
        // getSystemService(Context.LOCATION_SERVICE);
        // locationManager.requestLocationUpdates(
        // LocationManager.GPS_PROVIDER,
        // MINIMUM_TIME_BETWEEN_UPDATES,
        // MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
        // new MyLocationListener());
        cur_cal.setTimeInMillis(System.currentTimeMillis());
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cur_cal.getTimeInMillis(),
                60 * 1000*3, pintent);
    }
    
    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
        //turnGPSOn();
        /*Toast.makeText(getApplicationContext(), "Hello1", Toast.LENGTH_LONG)
                .show();*/
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
         locationListener = new MyLocationListener();
         locationManager.requestLocationUpdates(
                    LocationManager.NETWORK_PROVIDER,
                    MINIMUM_TIME_BETWEEN_UPDATES,
                    MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, (LocationListener) this);
         if (locationManager != null) {
                location = locationManager
                        .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                if (location != null) {
                    latitude = location.getLatitude();
                    longitude = location.getLongitude();
                    /*Toast.makeText(getApplicationContext(), latitude + ", ll" + longitude, Toast.LENGTH_LONG)
                    .show();*/
                    userFunction = new UserFunctions();
                    new YourAsyncTaskLogin().execute();
                }
            }
    
         location =locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                MINIMUM_TIME_BETWEEN_UPDATES, 1.0f, locationListener);
    
    }
    
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        // removeGpsListener();
    }
    
    
    
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    
    // private void removeGpsListener(){
    // try{
    // lm.removeUpdates(locationManager);
    // }
    // catch(Exception ex){
    // System.out.println("Exception in GPSService --- "+ex);
    // }
    // }
    
    private class MyLocationListener implements LocationListener {
    
        public void onLocationChanged(Location location) {
            postdata(location.getLatitude(), location.getLongitude());
            String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    location.getLongitude(), location.getLatitude());
            /*Toast.makeText(MyService.this, message, Toast.LENGTH_LONG).show();
            turnGPSOff();*/
        }
    
        private void postdata(double latitude, double longitude) {
            // TODO Auto-generated method stub
            /*Toast.makeText(getApplicationContext(),
                    latitude + ", " + longitude, Toast.LENGTH_LONG).show();*/
        }
    
        public void onStatusChanged(String s, int i, Bundle b) {
            // Toast.makeText(MyService.this, "Provider status changed",
            // Toast.LENGTH_LONG).show();
        }
    
        public void onProviderDisabled(String s) {
            // Toast.makeText(MyService.this,
            // "Provider disabled by the user. GPS turned off",
            // Toast.LENGTH_LONG).show();
        }
    
        public void onProviderEnabled(String s) {
            // Toast.makeText(MyService.this,
            // "Provider enabled by the user. GPS turned on",
            // Toast.LENGTH_LONG).show();
        }
    
    }
    
    public void turnGPSOn() {
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.putExtra("enabled", true);
        this.sendBroadcast(intent);
    
        String provider = Settings.Secure.getString(getContentResolver(),
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        if (!provider.contains("gps")) { // if gps is disabled
            final Intent poke = new Intent();
            poke.setClassName("com.android.settings",
                    "com.android.settings.widget.SettingsAppWidgetProvider");
            poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
            poke.setData(Uri.parse("3"));
            this.sendBroadcast(poke);
    
        }
    }
    
    // automatic turn off the gps
    public void turnGPSOff() {
        String provider = Settings.Secure.getString(getContentResolver(),
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        if (provider.contains("gps")) { // if gps is enabled
            final Intent poke = new Intent();
            poke.setClassName("com.android.settings",
                    "com.android.settings.widget.SettingsAppWidgetProvider");
            poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
            poke.setData(Uri.parse("3"));
            this.sendBroadcast(poke);
        }
    }
    
    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
    
    }
    
    
    class YourAsyncTaskLogin extends AsyncTask<Void, Void, Void> {
    
        //private ProgressDialog _ProgressDialog;
    
        @Override
        protected void onPreExecute() {
            // show your dialog here
    
            /*_ProgressDialog = ProgressDialog.show(getApplicationContext(), "",
                    "Loading", true);*/
    
        }
    
        @Override
        protected Void doInBackground(Void... params) {
            json = userFunction.sendLocations(android_id, userName,latitude+"", longitude+"");
            return null;
        }
    
        protected void onPostExecute(Void result) {
            try {
                Log.e("Key_Success:",
                        json.getString(KEY_SUCCESS));
                if (json.getString(KEY_SUCCESS) != null) {
                    // loginErrorMsg.setText("");
                    String res = json.getString(KEY_SUCCESS);
    
                    if (Integer.parseInt(res) == 1) {
    
    
    
                    } else {
                        // Error in login
                        // loginErrorMsg.setText("Incorrect username/password");
    
                        //_ProgressDialog.cancel();
    
    
                    }
    
                } else {
                    // Error in login
                    // loginErrorMsg.setText("Incorrect username/password");
    
                    //_ProgressDialog.cancel();         
    
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Log.e("error", e.getMessage());
            }
    
            //_ProgressDialog.dismiss();
        }
    }
    public String getAccount() {
        AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
        Account[] list = manager.getAccountsByType("com.google");
        if (list.length != 0) {
            String email = list[0].name;
            return email;
        } else {
            return null;
        }
    }
    }