در این مقاله به بررسی نحوه پیادهسازی قابلیت GPS در سیستمعاملهای Android، iOS، و Microsoft پرداخته میشود. همچنین نحوه اتصال به دانگل GPS خارجی را نیز مورد بررسی قرار میدهیم.
ابتدا باید دسترسی به مکان را در فایل AndroidManifest.xml
اضافه کنید:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
کد زیر نشان میدهد که چگونه میتوانید از GPS داخلی و همچنین دانگل GPS خارجی استفاده کنید:
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// گرفتن LocationManager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// درخواست بهروزرسانی مکان
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
// دریافت مکان جدید
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
}
برای استفاده از GPS در iOS از کلاس CLLocationManager
استفاده میکنیم:
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// درخواست دسترسی به مکان
locationManager.requestWhenInUseAuthorization()
// شروع بهروزرسانی مکان
locationManager.delegate = self
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.last {
// دریافت مکان جدید
let latitude = location.coordinate.latitude
let longitude = location.coordinate.longitude
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Location error: \\(error.localizedDescription)")
}
}
برای استفاده از GPS در Windows از کلاس GeoCoordinateWatcher
استفاده میکنیم:
using System.Device.Location;
class Program
{
static void Main()
{
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.PositionChanged += (sender, e) =>
{
// دریافت مکان جدید
double latitude = e.Position.Location.Latitude;
double longitude = e.Position.Location.Longitude;
};
watcher.Start();
}
}
برای اتصال به دانگل GPS خارجی باید بسته به نحوه اتصال آن (USB یا بلوتوث) کتابخانهها و متدهای مرتبط را استفاده کنید. در زیر مثالی از نحوه پیادهسازی GPS با استفاده از دانگل خارجی آورده شده است:
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// گرفتن LocationManager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// درخواست بهروزرسانی مکان از دانگل GPS خارجی
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
// دریافت مکان جدید از دانگل GPS خارجی
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
}
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// درخواست دسترسی به مکان
locationManager.requestWhenInUseAuthorization()
// شروع بهروزرسانی مکان از دانگل GPS خارجی
locationManager.delegate = self
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.last {
// دریافت مکان جدید از دانگل GPS خارجی
let latitude = location.coordinate.latitude
let longitude = location.coordinate.longitude
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Location error: \\(error.localizedDescription)")
}
}
using System.Device.Location;
class Program
{
static void Main()
{
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.PositionChanged += (sender, e) =>
{
// دریافت مکان جدید از دانگل GPS خارجی
double latitude = e.Position.Location.Latitude;
double longitude = e.Position.Location.Longitude;
};
watcher.Start();
}
}
استفاده از GPS در سیستمعاملهای مختلف به شما این امکان را میدهد که مکان دستگاهها را بهروزرسانی و مشاهده کنید. با اتصال به دانگل GPS خارجی میتوانید دقت و قابلیتهای بیشتری به برنامههای خود اضافه کنید. اطمینان حاصل کنید که دسترسیها و مجوزهای لازم را به درستی مدیریت کرده و به خطاها به طور مناسب پاسخ دهید.