рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ!
рдпрд╣
рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рджреВрд╕рд░рд╛ рд▓реЗрдЦ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ
рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ: рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕реНрдерд╛рди (Google рдЯреЗрдмрд▓) рд╕реЗ рджреВрд╕рд░реЗ (рдШрд░) рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ (рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛) рддрд╛рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрд░реЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рд╕реЗ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдиреЗ рдХреЛ рдХрд╣рддрд╛ рд╣реВрдВред
рднрд╛рдЧ 1. рд╕рдорд╕реНрдпрд╛
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ рдЬреЛ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИред рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬреЛ рдпрд╣ рдмрд╣реБрдд рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдирдВрдЧреЗ рдбреЗрдЯрд╛, рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ)ред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛ рд░рд╣рд╛ рд╣реВрдВ -
рдпрд╣рд╛рдВ рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП
рдкреНрд░рд▓реЗрдЦрди рд╣реИ ред
рднрд╛рдЧ 2. рд╕рдорд╛рдзрд╛рди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛
рдПрдХ рдЕрджреНрднреБрдд рддрдВрддреНрд░ рд╣реИ - рдкреНрд░рд╕рд╛рд░рдгред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рджреВрд╕рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИред рдЖрдк рдЗрд╕реЗ рддреБрд░рдВрдд рд╕рднреА рдХреЛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- рдХрд┐рд╕реА рддрд░рд╣ рдкрд╛рд░рд┐рдд рд╡рд╕реНрддреБ рд╕реЗ JSON рдмрдирд╛рддреЗ рд╣реИрдВ
- рдкреНрд░рд╕рд╛рд░рдг рдЬрдорд╛ рдХрд░реЗрдВ
- рджреВрд╕рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
- JSON рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рд╡рд╕реНрддреБ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ JSON рдмрдирд╛рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк Parcelable рдирд╛рдордХ рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╕рд╛рд░рдг, рдпрд╛ рд╕реАрд░рд┐рдпрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред Serializable рдЬрд╛рд╡рд╛ рд╕реЗ рдПрдХ рдорд╛рдирдХ рдЪреАрдЬ рд╣реИ, Parcelable рдПрдХ рд╕рдорд╛рди рдЪреАрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред
рдореЗрд░реА рд╡рд╕реНрддреБрдПрдВ рдХрд╛рдлреА рдЫреЛрдЯреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдХреНрд╕рд░ JSON рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрд╛ рдерд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рднреЗрдЬреЗред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ "рдкрд╛рд╕ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рд╕реЗ JSON рдмрдирд╛рдирд╛" рдЪреБрдирд╛ред рд╢рд╛рдпрдж рддрдм рдореИрдВ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓ рджреВрдВрдЧрд╛ред
рднрд╛рдЧ 3. рдШреЛрд▓ рдХреЛ рдШреЛрд▓рдирд╛
рдЕрдиреБрдЪреНрдЫреЗрдж 1 рдФрд░ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 4. JSON рдореЗрдВ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдПрдХ
рдЧреЗрд╕рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред
рдЪреАрдЬреЛрдВ рдХреЛ рдардВрдбрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд╕реНрдЯреНрд░рд┐рдВрдЧ () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред рдЦреИрд░, рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП () рд╕реЗ рдХрд░реЗрдВред
class SecureData(val eeg1: Double?, val eeg2: Double?, date: Date) { override fun toString(): String { val gson = Gson() return gson.toJson(this) } companion object { fun fromString(model: String): SecureData { val gson = Gson() return gson.fromJson(model, SecureData::class.java) } } }
рдмрд┐рдВрджреБ 2. рд╣рдо рд╡рд╕реНрддреБ рднреЗрдЬрддреЗ рд╣реИрдВ
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
val intent = Intent() intent.action = BroadcastUtils.BROADCAST_GESTURE intent.putExtra(BroadcastUtils.EXTRA_GESTRE, it.toString()) sendBroadcast(intent)
рдпрд╣рд╛рдВ рд╣рдо рдЗрд░рд╛рджрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВред
BroadcastUtils.BROADCAST_GESTURE - рдпрд╣ рд╡рд╣ рдЫреЛрдЯреА рдЪреАрдЬрд╝ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╕рд╛рд░рдгреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВрдЧреЗ (рдЪрд╛рд╣реЗ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВ)ред
рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
intent.component = ComponentName( PermissionsFetcher.REFACE_APP, "${PermissionsFetcher.REFACE_APP}.receivers.ActionsReceiver" )
рдЕрдиреБрдорддрд┐рдпрд╛рдБFetcher.REFACE_APP рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХрд╛ APPLICATION_ID рд╣реИ, рдФрд░ $ {#Fetcher.REFACE_APP} .receivers.ActionsReceiver рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдкрде рд╣реИред
рдмрд┐рдВрджреБ 3. рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддрдм рддрдХ рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрд╡реЗрджрди рдмрдВрдж рди рд╣реЛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рд╕рдХреНрд░рд┐рдпрдг рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдмрдВрдж рди рд╣реЛ рдЬрд╛рдПред
registerReceiver(GesturesReceiver(), IntentFilter(BroadcastUtils.BROADCAST_GESTURE))
рдФрд░ рдпрд╣рд╛рдБ рдЬреЗрд╕реНрдЪрд░рд╕рд┐рд╡ рд╣реИ: class GesturesReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Timber.i("Received gesture") val action = BroadcastUtils.reparseGestureIntent(intent) MainApp.actionSubject.onNext(action) } }
рдпрд╣рд╛рдБ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд░рд╛рджрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЗрд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ RxJava рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣реАрдВ рднреЗрдЬ рджрд┐рдпрд╛ред
рднрд╛рдЧ 4. рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдк рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрднрд╡ рдЖрдкрдХреЛ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрднреА рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
github.com/reface-tech/CodeSpecialApp