How to get the location of an android device by its android id

I am new to Android and have recently started learning Android and I am trying to find the location of any Android device by its unique Android ID. Thanks to this, I can track the approximate or exact location either by GPS or by a network provider. In detail, I want to say that whenever I enter any Android ID in my application, I can get the device location in my application. Thanks for your kind help.

0


source to share


2 answers


Finally, I can 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;
    }
}
}

      

+4


source


if you want to get the location of any device that has an app on your mobile device you can get it, firstly in your app you can upload locations to your server using a member (you can install it, unique to each device) for each x time (you can set it how many times you update the location). And then you can check your db on your server what device where.



(my advice is you can use webservice to update the db on your server)

0


source







All Articles