استفاده از GPS در اندروید

استفاده از GPS  در اندروید

اگه میخواید استفاده از GPS  رو مطالعه کنید ابتدا  آموزش مربوط به استفاده از نقشه گوگل رو ببینید بعد بیایید سراغ این آموزش.

اگه شما نوع اکتیویتی را GoogleMap  انتخاب کرده باشید تو کدهای ایجاد شده در MainActivity   مکان پیش فرض شما در نقشه که با مختصات نقطه مورد نظر مقدار دهی میشه قسمتی داریم که میتونید نوع مکان نما را مشخص کنید.

LatLng tehran = new LatLng(32, 53);
mMap.addMarker(new MarkerOptions().position(tehran).title(“Marker in Iran”).snippet(“لواسان”).icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder)));

 

حالا برای استفاده از GPS از کد زیر را در متد OnCreate() می‌نویسیم:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

بر روی پیغام خطا کلیک کنید و خود اندروید استودیو یه سری کدهای دیگه اضافه می‌کنه؛ مبنی بر اینکه اگر موبایل شما ساپورت نکنه از برنامه خارج بشه.

کد اضافه شده در حقیقیت شرط کنترل ورژن اندروید شماست:

if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

return;
}

که ما خودمون خط زیر را اضافه میکنیم:

else{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}

کدهای مربوط به گرفتن مختصات به شکل زیره که تو متد onLocationCahnged()  باید اضافه بشه:

int latitude = (double) (location.getLatitude());
int longitude = (double) (location.getLongitude());

که می‌تونید با یه پیغام این مقادیر را نمایش بدید یا با دستور زیر تو log  نمایش بدید.

Log.i(“Geo_Location”, “Latitude: ” + latitude + “, Longitude: ” + longitude);

 

برای نشان دادن مکان فعلی شما در نقشه با نشانگر ابتدا متغیر زیر را تعریف می‌کنیم:

public LatLng myLoc;

بعد درادامه  متد onLocationChanged()  با مقداردهی متد LatLng()  با مقادیری که از GPS  گرفتیم بجای مختصات پیش فرض مکان فعلی شما در نقشه نشان داده می‌شود:

myLoc=new LatLng(latitude, longitude);

ومقادیر کدهای بعدی را به شکل زیر تغییر می‌دهیم:

mMap.addMarker(new MarkerOptions().position(myLoc).title(“Marker in Iran”).snippet(“محل فعلی”).icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder)));

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLoc,10));

 

 

در پایان کل کلاس MainActivity() که برای GPS  نوشته بودیم را براتون میزارم تا یه موقع این بتونید یک جا ازش استفاده کنید:

package rena.mymap;

import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {
public double latitude=0;
public double longitude=0;
private GoogleMap mMap;
public LatLng myLoc;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

LocationManager locationManager = (LocationManager) getSystemService(this.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

return;
}else{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}

}

@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng tehran = new LatLng(32, 53);

}

@Override
public void onLocationChanged(Location location) {
latitude = (double) (location.getLatitude());
longitude = (double) (location.getLongitude());
myLoc=new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(myLoc).title(“Marker in Iran”).snippet(“لواسان”).icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLoc,10));
Log.i(“Geo_Location”, “Latitude: ” + latitude + “, Longitude: ” + longitude);
}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {

}

}

0 پاسخ

دیدگاه خود را ثبت کنید

آیا می خواهید به بحث بپیوندید؟
در صورت تمایل از راهنمایی رایگان ما استفاده کنید!!

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *