मैं Google क्लाउड प्लेटफ़ॉर्म से प्राप्त Google मानचित्र API कुंजी का उपयोग करके Android Studio में अपना वर्तमान स्थान प्राप्त करने का प्रयास कर रहा हूं। अगर मैं अपने फोन पर ऐप चलाता हूं, तो सब कुछ ठीक है। यदि मैं एमुलेटर पर ऐप चलाता हूं, तो मेरा स्थान Google प्लेक्स प्रतीत होता है, जैसा कि निम्न छवि में है (जो पूरी तरह से गलत होगा): गलत स्थान दिखाने वाला एमुलेटर ऐप
मुझे यकीन नहीं है कि यह एपीआई कुंजी के कारण है या शायद कोड/अनुमति/जीपीएस में कोई गलती है? मैंने एक ट्यूटोरियल से कोड लिया, लेकिन अब ऐसा लगता है कि Google क्लाइंट को अब बहिष्कृत कर दिया गया है (सुनिश्चित नहीं है कि यह समस्या है)। मेरा मानना है कि यह एमुलेटर की वजह से है, लेकिन मुझे नहीं पता क्यों। मैं वर्तमान में पिक्सेल 2 एपीआई 26 का उपयोग कर रहा हूं।
मैं यहां कोड दिखाऊंगा:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="com.google.android.providers.gsf.permisson.READ_GSERVICES"/>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
बिल्ड.ग्रेड:
implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation 'com.google.android.gms:play-services-location:18.0.0'
मानचित्र गतिविधि:
public class GoogleMapsActivity extends FragmentActivity implements OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
private GoogleMap mMap;
private GoogleApiClient googleClient;
private LocationRequest locationRequest;
private Location ultimateLocation;
private Marker markerCurrentLocation;
private static final int Request_User_Location_Code = 90;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_maps);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
checkLocationPermission();
}
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
assert mapFragment != null;
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(@NotNull GoogleMap googleMap) {
mMap = googleMap;
//current location
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
createGoogleApiClient();
mMap.setMyLocationEnabled(true);
}
}
protected synchronized void createGoogleApiClient() { // ok
googleClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
googleClient.connect();
}
@Override
public void onLocationChanged(@NonNull Location location) { // ok
ultimateLocation = location;
if (markerCurrentLocation !=null)
{
markerCurrentLocation.remove();;
}
LatLng coordinates = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(coordinates);
markerOptions.title("Current Location");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
markerCurrentLocation = mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(coordinates));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 17.0f));
if(googleClient!=null)
{
LocationServices.FusedLocationApi.removeLocationUpdates(googleClient,this);
}
else
{
Toast.makeText(this, "NULLLLLLLL", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onConnected(@Nullable Bundle bundle) { // ok
locationRequest = new LocationRequest();
locationRequest.setInterval(1100);
locationRequest.setFastestInterval(1100);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(googleClient, locationRequest, this);
}
}
public boolean checkLocationPermission(){ // ok
boolean ret;
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_FINE_LOCATION))
{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
}
else
{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
}
ret = false;
}
else
{
ret = true;
}
return ret;
}
//ok
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode)
{
case Request_User_Location_Code:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED)
{
if(googleClient==null)
{
createGoogleApiClient();;
}
mMap.setMyLocationEnabled(true);
}
}
else
{
Toast.makeText(this, " PERMISSION DENIED", Toast.LENGTH_SHORT).show();
}
return ;
}
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
}
1 उत्तर
बस एम्यूलेटर कंट्रोल्स (थ्री डॉट्स मेन्यू) पर जाएं और Location
टैब में, मैप में किसी भी लोकेशन को पिन करें और Set Location
पर क्लिक करें।
फिर सत्यापित करें कि क्या आपको वह स्थान प्राप्त हुआ है जिसकी आप अपने ऐप में अपेक्षा कर रहे थे।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।