Android implements GPS to locate code instances

  • 2020-06-01 10:59:45
  • OfStack

Through GPS, one Location latitude and longitude can be converted to two Double latitude and longitude.
Latitude: 23.223871812820435
Latitude: 113.58986039161628
Start by creating 1 TextView and 2 Button


<TextView 
 android:id="@+id/text"
 android:layout_width="fill_parent" 
  android:layout_height="wrap_content"  />
 
 <Button
  android:id="@+id/btnStart"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text=" positioning " />
 <Button
  android:id="@+id/btnStop"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text=" stop " />


Then add the code for master Activity
Location is a type that stores latitude and longitude
LocationManager is a location management service type


private Button btnStart;
private Button btnStop;
private TextView textView;
private Location mLocation;
private LocationManager mLocationManager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
 
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 btnStart = (Button)findViewById(R.id.btnStart);
 btnStop = (Button)findViewById(R.id.btnStop);
 textView = (TextView)findViewById(R.id.text);
 btnStart.setOnClickListener(btnClickListener); // To locate 
 btnStop.setOnClickListener(btnClickListener); // End positioning button 
}
gpsIsOpen Is oneself write view current GPS Whether open 
getLocation  I wrote it myself 1 Methods for obtaining location information 
mLocationManager.removeUpdates() Is to stop the current GPS Location to monitor 
public Button.OnClickListener btnClickListener = new Button.OnClickListener()
{
 public void onClick(View v)
 {
  Button btn = (Button)v;
  if(btn.getId() == R.id.btnStart)
  {
   if(!gpsIsOpen())
    return;
   
  mLocation = getLocation();
   
   if(mLocation != null)
    textView.setText(" The dimension :" + mLocation.getLatitude() + "\n longitude :" + mLocation.getLongitude());
   else
    textView.setText(" Can't get the data ");
  }
  else if(btn.getId() == R.id.btnStop)
  {
   mLocationManager.removeUpdates(locationListener);
  }

 }
};
private boolean gpsIsOpen()
{
 boolean bRet = true;

 LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
 if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
 {
  Toast.makeText(this, " Did not open GPS", Toast.LENGTH_SHORT).show();
  bRet = false;
 }
 else 
 {
  Toast.makeText(this, "GPS Has been open ", Toast.LENGTH_SHORT).show();
 }

 return bRet;
}
 Determine whether it is currently enabled GPS
private boolean gpsIsOpen()
{
 boolean bRet = true;
 
 LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
 if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
 {
  Toast.makeText(this, " Did not open GPS", Toast.LENGTH_SHORT).show();
  bRet = false;
 }
 else 
 {
  Toast.makeText(this, "GPS Has been open ", Toast.LENGTH_SHORT).show();
 }

 return bRet;
}
 This method obtains the current latitude and longitude,   The first 1 Subfetch is always null
 From behind LocationListener Gets the changed location 
mLocationManager.requestLocationUpdates() Is open 1 a LocationListener Wait position change 
private Location getLocation()
{
 // Get location management services 
 mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);

 // Find service information 
 Criteria criteria = new Criteria();
 criteria.setAccuracy(Criteria.ACCURACY_FINE); // Positioning accuracy :  The highest 
 criteria.setAltitudeRequired(false); // Altitude information: no 
 criteria.setBearingRequired(false); // Azimuth information :  Don't need 
 criteria.setCostAllowed(true);  // Is payment allowed? 
 criteria.setPowerRequirement(Criteria.POWER_LOW); // Power consumption :  Low power consumption 
 
 String provider = mLocationManager.getBestProvider(criteria, true); // To obtain GPS information 

 Location location = mLocationManager.getLastKnownLocation(provider);
 
 mLocationManager.requestLocationUpdates(provider, 2000, 5, locationListener);
 
 return location;
}
 Instead, wait GPS You get the new latitude and longitude after you change your position 
private final LocationListener locationListener = new LocationListener()
{
 public void onLocationChanged(Location location)
 {
  // TODO Auto-generated method stub
  if(location != null)
   textView.setText(" The dimension :" + location.getLatitude() + "\n longitude :" 
      + location.getLongitude());
  else
   textView.setText(" Can't get the data " + Integer.toString(nCount));
 }

 public void onProviderDisabled(String provider)
 {
  // TODO Auto-generated method stub
 }

 public void onProviderEnabled(String provider)
 {
  // TODO Auto-generated method stub
 }

 public void onStatusChanged(String provider, int status, Bundle extras)
 {
  // TODO Auto-generated method stub
  
 }
};


Related articles: