مکان یابی در اندروید


location

مکان یابی کاربر در اندروید

مکان یابی کاربر، در برخی برنامه ها لازم است. در این مقاله از سری آموزش صفر تا صد اندروید، تشخیص location فعلی کاربر را آموزش خواهیم داد. برای مکان یابی کاریر به ست کردن Google Play Services API نیاز داریم. در این پروژه minSdk روی 16 تنظیم شده است. بدون معطلی به سراغ پیاده سازی این پروژه می رویم.

قدم اول : افزودن dependency های لازم

در این لینک تمام موارد موجود در Google Play Services API آورده شده است. مورد لازم برای پروژه ما، گزینه Google Location and Activity Recognition می باشد. در فایل build.gradle خط زیر را اضافه می نماییم:

dependencies {
    implementation 'com.google.android.gms:play-services-location:17.0.0'
}

قدم دوم : افزودن permission مربوطه

در این پروژه برای دستیابی به مکان فعلی کاربر باید permission زیر را به manifest اضافه نماییم :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

به منظور چک نمودن این permission داخل MainActivity و درون متد onStart کد زیر را اضافه می کنیم:

@Override
protected void onStart(){
    if (ContextCompact.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
       getLastLocation();
    }else     askUserPermission();

}

private void askUserPermission(){
   String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
        ActivityCompat.requestPermissions(MainActivity.this,permissions, 100);
}

در متد getLastLocation آخرین مکان کاربر را بدست می آوریم.

قدم سوم : ساخت نمونه ای از کلاس FusedLocationProviderClient

public class MainActivity extends AppCompatActivity {
    private FusedLocationProviderClient fusedLocationProviderClient;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
}

نمونه ساخته شده از این کلاس دستیابی به آخرین مکان کاربر را برای ما ممکن می سازد. به کمک این object متد getLastLocation را تکمیل می کنیم:

private void getLastLocation() {
    Task<Location> locationTask = fusedLocationProviderClient.getLastLocation();
    locationTask.addOnSuccessListener(new onSuccessListener<Location>()){
        @Override
        public void OnSuccess(Location location){
            if(location !=null){
               //We have a location
               Log.d(TAG, "OnSuccess: "+ location.toString());
               Log.d(TAG, "OnSuccess: "+ location.getLatitude());
               Log.d(TAG, "OnSuccess: "+ location.getLongitude());
            }else {
                Log.d(TAG, "OnSuccess: Null Location!");
             }
        }


    });

    locationTask.addOnFailureListener(new onFailureListener()){
        @Override
        public void onFailure(@NonNull Exception e){
            Log.e(TAG, "onFailure: ",e.getLocalizedMessage());
        }


    });




}

قدم آخر : اجرای برنامه

با اجرای برنامه پس از دریافت اجازه دسترسی به مکان کاربر، به مکان فعلی کاربر دست پیدا می کنیم و نتیجه در logcat بصورت زیر می باشد :

location

به این پست امتیاز دهید

روی ستاره های کلیک کنید و امتیاز بدید

میانگین امتیاز 0 / 5. تعداد: 0

از امتیاز شما متشکریم

دیدگاهتان را بنویسید

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

Enter Captcha Here : *

Reload Image