включить использование api поиска tomtom в котлине

Искал уже неделю, Официальная документация вообще непонятна.

как упоминалось там, код

val searchServiceConnection = SearchServiceManager.createAndBind(context,
    searchServiceConnectionCallback)

должен инициализировать API поиска в приложении. но непонятно, как им пользоваться после этого.

Я правильно установил и инициализировал API:

Gradle:

//library required for search
implementation("com.tomtom.online:sdk-search:2.4264")



android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

AndroidManifest

<meta-data
            android:name="OnlineSearch.Key"
            android:value="your-tomtom-key" />

2 ответа

Решение

Я предполагаю, что у вас есть правильный ключ API внутри файла AndroidManifest.xml. Из приведенного выше вы можете начать играть с TomTom Search API в три этапа:

  1. Создайте объект SearchAPI:

    val searchApi = OnlineSearchApi.create(applicationContext)!!
    
  2. Создайте объект поискового запроса:

    val text = "Berlin"
    val searchQuery = FuzzySearchQueryBuilder.create(text).build()
    
  3. Вызовите Search API и получите результаты внутри слушателя:

    searchApi.search(searchQuery, object: FuzzySearchResultListener {
        override fun onSearchResult(response: FuzzySearchResponse?) {
            Toast.makeText(applicationContext, "results", Toast.LENGTH_SHORT).show()
        }
    
        override fun onSearchError(error: SearchError?) {
            Toast.makeText(applicationContext, "error", Toast.LENGTH_SHORT).show()
        }
    })
    

Основываясь на данном ответе, который теперь устарел, вот новый эквивалент:

          private val searchApi = OnlineSearchApi.create(application, TOMTOM_API_KEY)

    val term = "Berlin"
    
    searchApi.search(FuzzySearchSpecification.Builder(term).build(), object : FuzzyOutcomeCallback {
                        override fun onError(error: SearchException) {
                            Log.e(TAG, "onError: ", error)
                        }
            
                        override fun onSuccess(fuzzyOutcome: FuzzyOutcome) {
                            for (fuzzyDetails in fuzzyOutcome.fuzzyDetailsList)
                                fuzzyDetails.apply { // process results (here we just print them)                               
                                  Log.d(TAG, "onSuccess: fuzzyDetails = $fuzzyDetails")
                                }
                              }
                            }) 
Другие вопросы по тегам