/
idgigibigule
/
Semester_work
Обзор
Документация
Войти
/
idgigibigule
/
Semester_work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MainActivity
116 строк
5 KB
idgigibigule
update MainActivity
22 дек 2025, 18:58
22 дек 2025, 18:58
50d432c
Код
Авторство
О чём код?
package com.example.navigator import android.Manifest import android.content.pm.PackageManager import android.location.Location import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.LocationServices import com.google.android.gms.maps.CameraUpdateFactory import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.OnMapReadyCallback import com.google.android.gms.maps.SupportMapFragment import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.MarkerOptions import annotation.SuppressLint private val appcompat: Any class MainActivity : AppCompatActivity() { // Создаем экземпляр графа private val graph = Graph() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Инициализируем данные университета initializeUniversityData() // Находим элементы интерфейса val startSpinner: Spinner = findViewById(R.id.startSpinner) val endSpinner: Spinner = findViewById(R.id.endSpinner) val findRouteButton: Button = findViewById(R.id.findRouteButton) val routeTextView: TextView = findViewById(R.id.routeTextView) // Создаем список названий кабинетов для спиннеров val roomNames = graph.getAllRooms().map { "${it.name} - ${it.description}" } // Настраиваем адаптеры для спиннеров val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, roomNames) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) startSpinner.adapter = adapter endSpinner.adapter = adapter // Обработчик нажатия кнопки findRouteButton.setOnClickListener { val startIndex = startSpinner.selectedItemPosition val endIndex = endSpinner.selectedItemPosition // Получаем выбранные кабинеты val rooms = graph.getAllRooms() if (startIndex < rooms.size && endIndex < rooms.size) { val startRoom = rooms[startIndex] val endRoom = rooms[endIndex] // Ищем кратчайший путь val route = graph.findShortestPath(startRoom.id, endRoom.id) // Отображаем результат if (route != null) { val routeText = buildString { append("Маршрут от ${startRoom.name} до ${endRoom.name}:\n\n") append("Общее время: ${route.totalDistance} мин\n\n") append("Инструкции:\n") route.instructions.forEachIndexed { index, instruction -> append("${index + 1}. $instruction\n") } } routeTextView.text = routeText } else { routeTextView.text = "Маршрут не найден" } } } } // Инициализация тестовых данных университета private fun initializeUniversityData() { // Создаем кабинеты (в реальном приложении можно загружать из БД) val rooms = listOf( Room(1, "101", "Вход", 1, 0.1f, 0.5f), Room(2, "102", "Гардероб", 1, 0.2f, 0.5f), Room(3, "201", "Деканат", 2, 0.3f, 0.5f), Room(4, "202", "Аудитория", 2, 0.4f, 0.5f), Room(5, "301", "Библиотека", 3, 0.5f, 0.5f), Room(6, "302", "Столовая", 3, 0.6f, 0.5f) ) // Добавляем кабинеты в граф rooms.forEach { graph.addRoom(it) } // Создаем связи (коридоры и лестницы) val connections = listOf( Connection(1, 2, 2, "corridor"), // От входа к гардеробу Connection(2, 3, 10, "stairs"), // Лестница на 2 этаж Connection(3, 4, 5, "corridor"), // По этажу Connection(3, 5, 10, "stairs"), // Лестница на 3 этаж Connection(5, 6, 3, "corridor") // По этажу ) // Добавляем связи в граф connections.forEach { graph.addConnection(it) } } // Расширение для Graph чтобы получить все кабинеты private fun Graph.getAllRooms(): List<Room> { // В реальной реализации нужно добавить этот метод в класс Graph return emptyList() // Заглушка } }