У меня странная проблема, когда у меня есть приложение android, которое использует карту Google для отображения маркеров мест на карте Google. Местоположения поступают из API через мои веб-сайты, а затем приложение отображает точки на карте. Это прекрасно работает при запуске из android в студию на виртуальные и физические устройства, но приложение разворачивается для воспроизведения в магазине. Я не уверен почему. Изображение ниже показывает его на физическом устройстве и виртуальном устройстве.
Изображение с виртуальным устройством с маркерами, отображаемыми на карте
Код активности карт Google
package kryptic.kode.diseaseprediction.ui
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Looper
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.google.android.gms.ads.AdListener
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.InterstitialAd
import com.google.android.gms.ads.MobileAds
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import kryptic.kode.diseaseprediction.R
import kryptic.kode.diseaseprediction.databinding.ActivityMapsBinding
import kryptic.kode.diseaseprediction.maps.LocationHelper
class MapsActivity : AppCompatActivity(), OnMapReadyCallback {
//binding
private lateinit var binding: ActivityMapsBinding
lateinit var mGoogleMap: GoogleMap
lateinit var locationHelper: LocationHelper
var mapFrag: SupportMapFragment? = null
var mFusedLocationClient: FusedLocationProviderClient? = null
private lateinit var mInterstitialAd: InterstitialAd
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_maps)
binding = ActivityMapsBinding.inflate(layoutInflater)
setContentView(binding.root)
MobileAds.initialize(this)
/*load Ads */
mInterstitialAd = InterstitialAd(this)
mInterstitialAd.adUnitId = getString(R.string.interstitial_ads)
mInterstitialAd.adListener = object : AdListener() {
override fun onAdClosed() {
mInterstitialAd.loadAd(AdRequest.Builder().build())
}
}
mInterstitialAd.loadAd(AdRequest.Builder().build())
if (mInterstitialAd.isLoaded) {
mInterstitialAd.show()
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.")
}
/*end Load ads*/
supportActionBar?.title = "Doctors Near By"
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
mapFrag = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
mapFrag?.getMapAsync(this)
}
public override fun onPause() {
super.onPause()
//stop location updates when Activity is no longer active
mFusedLocationClient?.removeLocationUpdates(locationHelper.mLocationCallback)
}
override fun onMapReady(googleMap: GoogleMap) {
//ads
mInterstitialAd.loadAd(AdRequest.Builder().build())
if (mInterstitialAd.isLoaded) {
mInterstitialAd.show()
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.")
}
mGoogleMap = googleMap
mGoogleMap.mapType = GoogleMap.MAP_TYPE_NORMAL
this.locationHelper = LocationHelper(this, mGoogleMap,getString(R.string.google_place_key))
//Check the build version to enable certain features
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
//Location Permission already granted
mFusedLocationClient?.requestLocationUpdates(
locationHelper.mLocationRequest,
locationHelper.mLocationCallback,
Looper.myLooper()
)
mGoogleMap.isMyLocationEnabled = true
} else {
//Request Location Permission
//checkLocationPermission()
locationHelper.checkLocationPermission()
}
} else {
mFusedLocationClient?.requestLocationUpdates(
locationHelper.mLocationRequest,
locationHelper.mLocationCallback,
Looper.myLooper()
)
mGoogleMap.isMyLocationEnabled = true
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
when (requestCode) {
MY_PERMISSIONS_REQUEST_LOCATION -> {
// If request is cancelled, the result arrays are empty.
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// location-related task you need to do.
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
) {
mFusedLocationClient?.requestLocationUpdates(
locationHelper.mLocationRequest,
locationHelper.mLocationCallback,
Looper.myLooper()
)
mGoogleMap.setMyLocationEnabled(true)
}
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show()
}
return
}
}// other 'case' lines to check for other
// permissions this app might request
}
companion object {
val MY_PERMISSIONS_REQUEST_LOCATION = 99
}
}
Есть идеи, почему это происходит?