Введение 4
1 Назначение 5
2 Средства разработки приложения Easy Hire 7
2.1 Обзор Google Map API 7
2.1.1 Класс GoogleMap 7
2.1.2 Класс MapFragment 8
2.1.3 Интерфейс OnMapReadyCallback 8
2.1.4 Интерфейс LocationSource 8
2.1.5 Интерфейс OnLocationChangedListener 9
2.1.6 Интерфейс OnMyLocationChangedListener 9
2.1.7 Класс Location 9
2.1.8 Класс Marker 10
2.1.3 Интерфейс InfoWindowAdapter 11
2.2 Обзор Firebase API 11
2.2.1 Использование данных Google Analytics для Firebase 12
2.2.2 Аутентификация Firebase 12
2.2.3 Начало работы в Firebase 13
2.2.4 Realtime Database 13
2.3 Системы автоматической сборки 14
3 Взаимодействие с приложением 15
Заключение 19
Список использованных источников 20
Приложение A 21
Приложение A
Код программы (частично)
package com.gsu.mk.easyhire.data
import android.content.Context
import android.content.DialogInterface
import android.support.v7.app.AlertDialog
import android.util.Log
import com.google.firebase.database.*
import com.google.gson.Gson
import com.gsu.mk.easyhire.R
import com.gsu.mk.easyhire.presentation.feature.main.activity.MainActivity
import com.gsu.mk.easyhire.presentation.feature.map.controller.MapController
import com.gsu.mk.easyhire.presentation.feature.map.fragment.MapFragment
import com.gsu.mk.easyhire.presentation.feature.map.intrfc.IMap
import com.gsu.mk.easyhire.presentation.feature.scan.fragment.ScanFragment
import java.util.ArrayList
object FirebaseHelper {
val TRANSPORT_NODE = "transport"
fun loadTransportListFromFirebase(context: Context, fragment: IMap) {
val database = FirebaseDatabase.getInstance()
val trNode = database.getReference(TRANSPORT_NODE)
trNode.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
val list = ArrayList<HireObj>()
if (dataSnapshot.value != null) {
for (child in dataSnapshot.children) {
if (child.child("isFree").value!!.equals("t")){
list.add(child.getValue(HireObj::class.java)!!)
}
}
if (list.size > 0){
SharedPreferencesHelper.saveTransportList(context, list)
MainActivity.hireObjs = list
}
fragment.updateMap()
}
}
override fun onCancelled(databaseError: DatabaseError) {
}
})
}
fun takeTransport(id: String){
val database = FirebaseDatabase.getInstance()
val trNode = database.getReference(TRANSPORT_NODE)
trNode.child(id).child("isFree").setValue("f")
}
fun freeTransport(obj: HireObj, context: Context){
val database = FirebaseDatabase.getInstance()
val trNode = database.getReference(TRANSPORT_NODE)
trNode.child(obj.id).child("isFree").setValue("t")
trNode.child(obj.id).child("lat").setValue(MapController.getCurrentPosition(context)!!.latitude)
trNode.child(obj.id).child("lon").setValue(MapController.getCurrentPosition(context)!!.longitude)
}
}
package com.gsu.mk.easyhire.data
import android.os.Parcel
import android.os.Parcelable
import com.google.firebase.database.IgnoreExtraProperties
@IgnoreExtraProperties
class HireObj(
val id: String = "",
val type: String = "",
val model: String = "",
val lat: Double = 0.0,
val lon: Double = 0.0,
val isFree: String = ""
): Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readDouble(),
parcel.readDouble(),
parcel.readString()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(id)
parcel.writeString(type)
parcel.writeString(model)
parcel.writeDouble(lat)
parcel.writeDouble(lon)
parcel.writeString(isFree)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<HireObj> {
override fun createFromParcel(parcel: Parcel): HireObj {
return HireObj(parcel)
}
override fun newArray(size: Int): Array<HireObj?> {
return arrayOfNulls(size)
}
}
}
package com.gsu.mk.easyhire.data
import android.content.Context
import android.content.SharedPreferences
import com.google.gson.Gson
import java.util.ArrayList
1 Жермаков, Д. Kotlin в действии / Д. Жермаков. – М.: ДМК Пресс, 2018. – 402 с.
2 Левиа, А. Kotlin for Android Developers / А. Левиа. – Калифорния.: Leanpub, 2015. – 226 с.
3 Стефен, С. Programming Kotlin / С. Стефен. – М.: Packt Publishing; Калифорния, 2017. – 397с.
4 Firebase Realtime Database [Электронный ресурс] // URL: https://firebase.google.com/docs/database. Дата доступа: 01.05.2019.
5 Map SDK for Android | Google Developers [Электронный ресурс] // URL: https://developers.google.com/maps/documentation/android-sdk/intro.