एंड्रॉइड में FusedLocationProviderClient का उपयोग करके GPS लोकेशन प्राप्त करना
यह उदाहरण दर्शाता है कि एंड्रॉइड ऐप में प्रोग्रामेटिकली वर्तमान GPS लोकेशन कैसे प्राप्त करें। हम Google Play Services के FusedLocationProviderClient का उपयोग करेंगे, जो बैटरी-कुशल तरीके से सटीक लोकेशन प्रदान करता है।
आवश्यक अनुमतियाँ
AndroidManifest.xml में निम्नलिखित अनुमति जोड़ें:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
चरण 1: लेआउट फ़ाइल बनाएं (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="वर्तमान GPS लोकेशन"
android:textSize="24sp"
android:textStyle="bold" />
<Button
android:id="@+id/getLocation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="लोकेशन प्राप्त करें" />
</LinearLayout>
चरण 2: MainActivity.java में कोड जोड़ें
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient fusedLocationClient;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
Button getLocationBtn = findViewById(R.id.getLocation);
final TextView locationTextView = findViewById(R.id.location);
getLocationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
LOCATION_PERMISSION_REQUEST_CODE);
return;
}
getLastKnownLocation(locationTextView);
}
});
}
private void getLastKnownLocation(final TextView textView) {
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener() {
@Override
public void onSuccess(Location location) {
if (location != null) {
String locInfo = String.format("अक्षांश: %.4f, देशांतर: %.4f\nसटीकता: %.1f मीटर",
location.getLatitude(), location.getLongitude(), location.getAccuracy());
textView.setText(locInfo);
} else {
textView.setText("लोकेशन उपलब्ध नहीं है। GPS चालू करें।");
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getLastKnownLocation(findViewById(R.id.location));
}
}
}
}
चरण 3: build.gradle में निर्भरता जोड़ें
dependencies {
implementation 'com.google.android.gms:play-services-location:21.0.1'
}
महत्वपूर्ण नोट्स
- एंड्रॉइड 10 (API 29) और उससे ऊपर के लिए, बैकग्राउंड लोकेशन के लिए
ACCESS_BACKGROUND_LOCATIONकी आवश्यकता होती है - हमेशा लोकेशन अनुरोध करने से पहले रनटाइम अनुमति जांचें
getLastLocation()null वापस कर सकता है यदि हाल ही में कोई लोकेशन उपलब्ध नहीं है- रियल-टाइम अपडेट के लिए
requestLocationUpdates()का उपयोग करें
आउटपुट
ऐप चलाने पर, "लोकेशन प्राप्त करें" बटन पर क्लिक करने से वर्तमान GPS निर्देशांक प्रदर्शित होंगे।