اخذ جای آپ تو دیت گردیده
درحالتی که میخواهید به روزرسانی شرایط مکانی داشته باشید ، جداگانه از رابط های interface فوق الذکر ، می بایست رابط LocationListener را نیز طراحی فرمائید. این رابط اسلوب جواب گویی (callback) تحت را ارائه میدهد که بایستی آن را در کلاس Activity خویش طراحی اپلیکیشن در مشهد طراحی فرمایید:
abstract void onLocationChanged(Location location) : این سیاق پاسخگویی برای اخذ اعلان ها از LocationClient هنگام تغییر تحول جای به کارگیری میگردد.
چگونگی سرویس ها جای
شی LocationRequest برای درخواست چگونگی سرویس ها (QoS) برای به روزرسانی جای از LocationClient استعمال میشود. سیاق های اثر گذار تهیه کننده ذیل وجود داراست که میتوانید از آنها برای مدیر چگونگی سرویس ها (QoS) استعمال فرمایید. متدهای متناظری برای اخذ پیکربندی وجود دارااست که میتوانید آن ها را در یادگرفتن های قانونی اندروید مشاهده کنید.
setExpirationDuration(long millis) : زمان مجال این درخواست را بر حسب میلی ثانیه تهیه و تنظیم فرمائید. بعد از این مجال درخواست منقضی میگردد.
setExpirationTime(long millis) : فرصت انقضای درخواست را بر حسب میلی ثانیه از مجال فعال سازی تهیه نمائید.
setFastestInterval(long millis) : به صورت مصرح، سریعترین مسافت هنگامی (وقفه) را برای به روزرسانی جای ، بر حسب میلی ثانیه تهیه نمائید.
setInterval(long millis) : مسافت هنگامی (وقفه) متبوع را برای به روزرسانی های جای ، بر حسب میلی ثانیه تهیه و تنظیم نمایید.
setNumUpdates(int numUpdates) : تعداد به روزرسانی های جای را تهیه و تنظیم فرمائید.
setPriority(int priority) : حق تقدم درخواست را گزینش نمایید.
در حال حاضر برای مثال ، در شرایطیکه نرمافزار شما جای با تمرکز بالا میخواهد ، بایستی یک درخواست جای با setPriority (حق تقدم) تهیه گردیده روی PRIORITY_HIGH_ACCURACY و setInterval (وقفه) روی 5 ثانیه (۵۰۰۰ میلی ثانیه) ساخت و ساز نماید. همینطور میتوانید وقفه بزرگتر و/یا این که حق تقدم دیگری به کار گیری فرمائید. برای مثالً برای دقتی در توان «شهر» میتوانید از حق تقدم PRIORITY_LOW_POWER یا این که برای دقتی درحد «بلوک» میتوانید از PRIORITY_BALANCED_POWER_ACCURACY به کارگیری فرمایید.
اکتیویتی ها هنگام ورود به دور نما (برای مثال در onPause) به طبعً بایستی حذف آحاد درخواست های جای را در حیث بگیرند ، یا این که دستکم درخواست را با وقفه ای بزرگتر و چگونگی تحت خیس عوض نمایند تا در مصرف منابع سیستم و انرژی صرفه جویی خواهد شد.
اکران نشانی جای
هنگامی شی location را داشته باشید ، میتوانید از روال Geocoder.getFromLocation برای به دست آوردن نشانی از ارتفاع و پهنا جغرافیایی به کارگیری نمائید. این اسلوب هم زمان میباشد و ممکن میباشد بازه مجال متعددی ارتفاع بکشد تا فعالیت خویش را اجرا دهد ، بدین ترتیب می بایست در بگراند فراخوانی خواهد شد از جملهً درون روال doInBackground یک کلاس AsyncTask فراخوانی خواهد شد.
برای به کارگیری از AsyncTask بایستی کلاسی بسازید که از آن ارث بری داشته باشد و تحت کلاس شما برای اعمال وظیفه در دور نما بایستی روال doInBackground را override نماید. در صوت نیاز به استعمال از سود در رابط کاربری بایستی مشی onPostExecute را override نمایید زیرا بعد از اتمام محاسبات در دورنما این روال در Thread رابط کاربری فراخوانی می گردد تا در شکل نیاز سود اکران داده گردد.
اپ مثال
نمونه پایین به شما آرم میدهد که چه گونه از اپلیکیشن های حالت مکانی در نرمافزار خویش برای اخذ جای فعلی و نشانی های مساوی آن و غیره استعمال فرمایید.
برای تست این نمونه ، شما به دستگاه تلفن همراه حقیقی وواقعی مجهز به اندروید آپ دیت گردیده، نیاز خواهید داشت ، در شکل به کارگیری از مشابه ساز ممکن میباشد این نرمافزار در آن عمل نکند و به زحمت بیفتید البته در حالتیکه از مشابه ساز به کار گیری میکنید ، از مشابه سازی به کارگیری فرمائید که Google Play داشته باشد.
فرایند ایجاد کرد این اپلیکیشن مثال:
برای ساخت و ساز یک اپلیکیشن اندرویدی از اندروید استودیو استعمال فرمایید و اسم آن را Location بگذارید. اسم بسته (package) آن را نیز com.loc.test.location قرار دهید.
پوشه src/GPSTracker.java را میسازیم و کدهای مایحتاج را به آن اضافه میکنیم.
فولدر src/MainActivity.java را اصلاح میکنیم و کد مایحتاج را به صورتی که درپی توضیح داده می توان به آن اضافه میکنیم تا محل فعلی و نشانی مساوی آن را اخذ کنیم.
فولدر XML لایوت res/layout/activity_main.xml را تغییر تحول میدهیم تا اجزای مایحتاج برای رابط کاربری را به آن اضافه کنیم.
پوشه res/values/strings.xml را تغییر و تحول میدهیم و اثبات های متنی را به آن اضافه میکنیم.
فولدر AndroidManifest.xml را به صورتی که به دنبال میبینید تغییر تحول میدهیم.
نرمافزار را ایفا و سود تغییرات صورت گرفته در نرم افزار را پژوهش میکنیم.
در ذیل محتوای پوشه اکتیویتی اساسی تغییرو تحول یافته MainActivity.java میباشد:
package com.loc.test.location;
import android.Manifest;
import android.app.Activity;
import android.سیستم عامل.Bundle;
import android.support.v4.app.ActivityCompat;
import android.test.mock.MockPackageManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btnShowLocation;
private static final int REQUEST_CODE_PERMISSION = 2;
String mPermission = Manifest.permission.ACCESS_FINE_LOCATION;
// GPSTracker class
GPSTracker gps;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
if (ActivityCompat.checkSelfPermission(this, mPermission)
!= MockPackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{mPermission},
REQUEST_CODE_PERMISSION);
// If any permission above not allowed by user, this condition will execute every time, else your else part will work
}
} catch (Exception e) {
e.printStackTrace();
}
btnShowLocation = (Button) findViewById(R.id.button);
// show location button click event
btnShowLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// create class object
gps = new GPSTracker(MainActivity.this);
// check if GPS enabled
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
// \\n is for new line
Toast.makeText(getApplicationContext(), \"Your Location is - \\nLat: \"
+ latitude + \"\\nLong: \" + longitude, Toast.LENGTH_LONG).show();
}else{
// can\'t get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
}
});
}
}