ajout méthode API

master
louwar 2 years ago
parent 15ee0a23e9
commit 1864cc1ede

@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Ajoutez cette ligne pour autoriser l'accès à la localisation -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

@ -0,0 +1,47 @@
package fr.iut.cinecool.API.OSM
import fr.iut.cinecool.model.CinemaResult
import fr.iut.cinecool.model.RouteResult
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class MethodApiOSM {
fun searchCinemas(latitude: Double, longitude: Double) {
val apiService = ApiClientOSM.getOSMClient()
val call = apiService.searchCinemas("cinema near $latitude,$longitude")
call.enqueue(object : Callback<List<CinemaResult>> {
override fun onResponse(call: Call<List<CinemaResult>>, response: Response<List<CinemaResult>>) {
val cinemas = response.body()
// Trouvez le cinéma le plus proche ou affichez la liste des cinémas
// Puis, utilisez la fonction getRoute() pour obtenir l'itinéraire
}
override fun onFailure(call: Call<List<CinemaResult>>, t: Throwable) {
// Gérer l'échec
}
})
}
fun getRoute(startLat: Double, startLon: Double, endLat: Double, endLon: Double) {
val apiKey = "5b3ce3597851110001cf6248953315121da3401d85fa50fce9c0991e"
val apiService = ApiClientOSM.getORSClient()
val call = apiService.getRoute(apiKey, "$startLat,$startLon", "$endLat,$endLon")
call.enqueue(object : Callback<RouteResult> {
override fun onResponse(call: Call<RouteResult>, response: Response<RouteResult>) {
val routeResult = response.body()
val steps = routeResult?.routes?.get(0)?.segments?.get(0)?.steps
if (steps != null) {
// Utilisez les instructions de l'itinéraire pour guider l'utilisateur
} else {
// Gérer le cas où il n'y a pas d'itinéraire disponible
}
}
override fun onFailure(call: Call<RouteResult>, t: Throwable) {
// Gérer l'échec
}
})
}
}

@ -1,6 +1,6 @@
package fr.iut.cinecool.API.THMDB
class Repository {
class MethodApiTHMDB {
private val apiService = ApiClientTHMDB.apiService
suspend fun getPopularMovies(apiKey: String, page: Int): MovieResponse {

@ -1,9 +1,13 @@
package fr.iut.cinecool
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import android.Manifest
class MainActivity : AppCompatActivity() {
private lateinit var navController: NavController
@ -14,4 +18,26 @@ class MainActivity : AppCompatActivity() {
navController = navHostFragment.navController
}
private val REQUEST_LOCATION_PERMISSION = 1
private fun checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), REQUEST_LOCATION_PERMISSION)
} else {
// Appeler searchCinemas() avec les coordonnées de l'utilisateur
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Appeler searchCinemas() avec les coordonnées de l'utilisateur
} else {
// Gérer le cas où la permission est refusée
}
}
}
}

@ -5,24 +5,24 @@ import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
import androidx.lifecycle.MutableLiveData
import fr.iut.cinecool.API.THMDB.Movie
import fr.iut.cinecool.API.THMDB.Repository
import fr.iut.cinecool.API.THMDB.MethodApiTHMDB
class MovieViewModel : ViewModel() {
private val repository = Repository()
private val methodApiTHMDB = MethodApiTHMDB()
val popularMovies = MutableLiveData<List<Movie>>()
val searchResults = MutableLiveData<List<Movie>>()
fun getPopularMovies(apiKey: String, page: Int) {
viewModelScope.launch {
val movies = repository.getPopularMovies(apiKey, page)
val movies = methodApiTHMDB.getPopularMovies(apiKey, page)
popularMovies.postValue(movies.results)
}
}
fun searchMovies(apiKey: String, query: String, page: Int) {
viewModelScope.launch {
val movies = repository.searchMovies(apiKey, query, page)
val movies = methodApiTHMDB.searchMovies(apiKey, query, page)
searchResults.postValue(movies.results)
}
}

Loading…
Cancel
Save