diff --git a/CineCool/app/src/main/AndroidManifest.xml b/CineCool/app/src/main/AndroidManifest.xml index 0603c3a..54ed57c 100644 --- a/CineCool/app/src/main/AndroidManifest.xml +++ b/CineCool/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/MethodApiOSM.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/MethodApiOSM.kt new file mode 100644 index 0000000..7384c44 --- /dev/null +++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/MethodApiOSM.kt @@ -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> { + override fun onResponse(call: Call>, response: Response>) { + 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>, 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 { + override fun onResponse(call: Call, response: Response) { + 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, t: Throwable) { + // Gérer l'échec + } + }) + } + +} \ No newline at end of file diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MethodApiTHMDB.kt similarity index 94% rename from CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt rename to CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MethodApiTHMDB.kt index d9d05e3..7616bb7 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MethodApiTHMDB.kt @@ -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 { diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt b/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt index 2a8c655..50b6d44 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt @@ -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, 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 + } + } + } + + } \ No newline at end of file diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MovieResponse.kt b/CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt similarity index 100% rename from CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MovieResponse.kt rename to CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt index 1a19080..dcbcc99 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt @@ -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>() val searchResults = MutableLiveData>() 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) } }