آموزش به دست آوردن مکان با استفاده از gps در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن مکان با استفاده از gps در برنامه نویسی اندروید می پردازیم یعنی با این کد می تونید محل دقیق گوشی خودتان را پیدا کنید حدودا برنامه هایی که گوشی را پیدا می کند به همین شکل کار می کند در ادامه با ما همراه باشید.
دو چیز برای به دست آوردن آدرس مهم است
- longitude
- Latitude
ابتدا شما باید دسترسی های زیر را به AndroidManifest.xml اضافه کنید.
1 2 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> |
دسترسی های استفاده از اینترنت و دسترسی به مکان.
ابتدا دو دکمه و دو TextView در layout خود قرار دهید همانند زیر .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.android_examples.getgpsdata_android_examplescom.MainActivity" android:background="#FFF3E0"> <TextView android:text="Latitude Show Here" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="29dp" android:id="@+id/textView2" android:textColor="#000000" android:textSize="25dp" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" /> <Button android:text="Enable GPS in device" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:id="@+id/button" /> <Button android:text="Access GPS location in coordinates " android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="23dp" android:id="@+id/button2" /> <TextView android:text="Longitude Show Here" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" android:textColor="#000000" android:textSize="25dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="96dp" /> </RelativeLayout> |
و سپس در اکتیویتی خود کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | package com.android_examples.getgpsdata_android_examplescom; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.provider.Settings; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements LocationListener { public static final int RequestPermissionCode = 1 ; Button buttonEnable, buttonGet ; TextView textViewLongitude, textViewLatitude ; Context context; Intent intent1 ; Location location; LocationManager locationManager ; boolean GpsStatus = false ; Criteria criteria ; String Holder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EnableRuntimePermission(); buttonEnable = (Button)findViewById(R.id.button); buttonGet = (Button)findViewById(R.id.button2); textViewLongitude = (TextView)findViewById(R.id.textView); textViewLatitude = (TextView)findViewById(R.id.textView2); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); criteria = new Criteria(); Holder = locationManager.getBestProvider(criteria, false); context = getApplicationContext(); CheckGpsStatus(); buttonEnable.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent1 = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent1); } }); buttonGet.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CheckGpsStatus(); if(GpsStatus == true) { if (Holder != null) { if (ActivityCompat.checkSelfPermission( MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } location = locationManager.getLastKnownLocation(Holder); locationManager.requestLocationUpdates(Holder, 12000, 7, MainActivity.this); } }else { Toast.makeText(MainActivity.this, "Please Enable GPS First", Toast.LENGTH_LONG).show(); } } }); } @Override public void onLocationChanged(Location location) { textViewLongitude.setText("Longitude:" + location.getLongitude()); textViewLatitude.setText("Latitude:" + location.getLatitude()); } @Override public void onStatusChanged(String s, int i, Bundle bundle) { } @Override public void onProviderEnabled(String s) { } @Override public void onProviderDisabled(String s) { } public void CheckGpsStatus(){ locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } public void EnableRuntimePermission(){ if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)) { Toast.makeText(MainActivity.this,"ACCESS_FINE_LOCATION permission allows us to Access GPS in app", Toast.LENGTH_LONG).show(); } else { ActivityCompat.requestPermissions(MainActivity.this,new String[]{ Manifest.permission.ACCESS_FINE_LOCATION}, RequestPermissionCode); } } @Override public void onRequestPermissionsResult(int RC, String per[], int[] PResult) { switch (RC) { case RequestPermissionCode: if (PResult.length > 0 && PResult[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this,"Permission Granted, Now your application can access GPS.", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this,"Permission Canceled, Now your application cannot access GPS.", Toast.LENGTH_LONG).show(); } break; } } } |
ما در اینجا از Runtime Permission استفاده کردیم قبلا این آموزش را در سایت قرار داده بودیم که چیست و چه کاری انجام میدهد. void های متعددی برای به دست آوردن Location , تغییر Location و فعال و غیر فعال سازی Gps وجود دارد.
در اکتیویتی دو تا دکمه وجود دارد یکی از آنها برای فعال سازی gps و دومی دریافت مختصات .
این آموزش هم به پایان رسید.
موفق و موید باشید.
باسلام
تو محیط بسته با تاخیر موقعیت رو میگیره باید چکار کنیم