Как добавить класс Context в другой класс? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь использовать Localbroadcast для отправки широты и долготы в основной вид деятельности.Но параметр this в пределах getInstance() не работает.Я попытался добавить класс контекста, но это все еще неправильно.Есть идеи?Спасибо.

companion object {
    val TAG = "LocationTrackingService"

    val INTERVAL = 5000.toLong() // In milliseconds
    val DISTANCE = 0.toFloat() // In meters

    val locationListeners = arrayOf(
        LTRLocationListener(LocationManager.GPS_PROVIDER),
        LTRLocationListener(LocationManager.NETWORK_PROVIDER)
    )
    private fun sendRequest() {
        // The string "GPS_not_activaded" will be used to filer the intent
        val intentRequest = Intent("Sending_location_coordinates")
        LocalBroadcastManager.getInstance(this).sendBroadcast(intentRequest)
        Log.d(TAG,"Se enviaron las coordenadas")
    }

    class LTRLocationListener(provider: String) : android.location.LocationListener {

        val lastLocation = Location(provider)


        override fun onLocationChanged(location: Location?) {
            lastLocation.set(location)
            Log.d(TAG, "======================= New Data =======================")
            Log.d(TAG,"latitud: "+ lastLocation.latitude)
            Log.d(TAG,"longitud: "+ lastLocation.longitude)
            sendRequest()
        }

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Я предлагаю вам не использовать LocalBroadcastManager , поскольку это не поможет в android O и Позже в версиях Android.

Вы можете прочитать его здесь Неявные-широковещательные исключения

Я рекомендую использовать EventBus , поскольку это лучшее решение для передачи данные в любом месте приложения - Без использования контекста объекта, а также работают в всех версиях Android .

0 голосов
/ 28 февраля 2019

Вы должны передать контекстный параметр методу sendRequest следующим образом.

class LocationTrackingService : Service(){

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // Pass this as context here
        sendRequest(this)

        return super.onStartCommand(intent, flags, startId)
    }

    companion object {
        val TAG = "LocationTrackingService"

        val INTERVAL = 5000.toLong() // In milliseconds
        val DISTANCE = 0.toFloat() // In meters

        val locationListeners = arrayOf(
            LTRLocationListener(LocationManager.GPS_PROVIDER),
            LTRLocationListener(LocationManager.NETWORK_PROVIDER)
        )

        private fun sendRequest(context: Context) {
            // The string "GPS_not_activaded" will be used to filer the intent
            val intentRequest = Intent("Sending_location_coordinates")
            LocalBroadcastManager.getInstance(context).sendBroadcast(intentRequest)
            Log.d(TAG, "Se enviaron las coordenadas")
        }
    }
}
0 голосов
/ 27 февраля 2019

Попробуйте

 this@LocationTrackingService

, чтобы получить LocationTrackingService класс this объект.

Подробнее о this объект здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...