kmzbrnoi / hjopandroiddriver Goto Github PK
View Code? Open in Web Editor NEWhJOP Engine Driver for Android
Home Page: https://hjop.kmz-brno.cz/hJOPdriver
License: Apache License 2.0
hJOP Engine Driver for Android
Home Page: https://hjop.kmz-brno.cz/hJOPdriver
License: Apache License 2.0
Reagovat na zprávu: -;DCC;DISABLED
a -;DCC;GO;
Pozor, posílán i při připojování k serveru.
Otestovat na zařízeních:
@kudlav píše: V aplikaci hJOP Android Driver bychom spolu s Kubou uvítali, kdyby na obrazovce “Řízení vlaku” bylo tlačítko k uvolnění vlaku. Akce by mohla být podmíněna potvrzením. Aktuálně je nutné provést 4 kliknutí, přepnutí okna atd., což vede k tomu, že čas od času uživatel vlak neuvolní. Tlačítko by zvýšilo motivaci uvolňovat vlaky.
Namísto Hardcoded string bych použil R.string.mm_change_login
en:Change login
cs:Změnit přihlašovací údaje
Bylo by velice hezké.
Honzovi Kaňkovi aplikace zamrzla při řízení lokomotivy. Možná zamrzla při stisknutí tlačítka pro zapnutí funkce, ihned mě napadá funkce s while cyklem, která reálně může cyklit:
Bohužel pokud by aplikace necyklila, tak by patrně spadla. Zpětnou vazbu nebylo možné odeslat, nelze reprodukovat.
activities.TrainHnadler
ANR Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it. Outbound queue length: 0, Wait queue length: 53.)
Do pak způsobuje problémy (aplikace padá) -> zamezit.
Zarhnout verzi 1.1.
V otevřeném menu zobrazit v horní části přihlášeného uživatele a název (příp. adresu) připojeného serveru.
Motivace:
Název serveru umožní odhalit chybu uživatele, který se připojí na nesprávný server.
Pokud strojvedoucí způsobí vážnou chybu a ukáže se, že nemá zkoušky, lze zjistit, pod kým je přihlášen a kdo bude nést zodpovědnost (diskrétně, nemusím pořvávat, čí je to mobil).
Pokud se dá číslo verze na stejný řádek jako název aplikace tak zde bude dostatek prostoru (nyní nevyužitý).
Změna pole IP/DNS server se neuloží.
Reprodukováno ve verzi 1.8.
Zařízení:
-> Aktuální rychlost je menší než původní, nejčastěji však 1 km/h, posuvník však zůstává v původní pozici.
Nutno otestovat skutečné chování s kolejištěm.
Zařízení:
prozkoumat možnosti
Pouze UI bug, na jízdu nemá vliv
A ideálně zobrazovat verzi.
Původní myšlenkou aplikace bylo, že uživatel může mít na mobilu více lokomotiv různých vlaků a ty řídit paralelně. Proto je při přebírání lokomotivy ve výchozím stavu checkbox "Multitrakce" odškrtnutý. Ukazuje se, že tento usecase není vůbec používaný. Pokud má uživatel více lokomotiv, prakticky vždycky je využívá v multitrakci.
Převzetí lokomotiv do multitrakce je uživatelsky nepřívětivé: je třeba u každé loko zaškrtnout "ruční řízení" a také "multitrakce". Navrhuji změnit chování aplikace tak, že checbox "Multitrakce" je rovnou zaškrtnutý při převzetí loko.
V multitrakci pak bude stačit převzít všechna loko do ručního řízení.
Dalším nápadem je se při převzetí jedné loko do ručního řízení (zašrknutí checboxu od uživatele) dotázat uživatele nějakým pop-up alertem, jestli nechce převzít i zbylé lokomotivy. Tady nechávám na zvážení, jestli implementovat, protože není úplně jasné, jak pak uživateli dát vědět, že se převzetí podařilo/nepodařilo.
Frekvence výskytu nízká. Nutno zjistit, jak lze reprodukovat.
2020-09-17 22:21:55.325 19227-19227/cz.mendelu.xmarik.train_manager E/AndroidRuntime: FATAL EXCEPTION: main
Process: cz.mendelu.xmarik.train_manager, PID: 19227
java.lang.RuntimeException: Unable to start activity ComponentInfo{cz.mendelu.xmarik.train_manager/cz.mendelu.xmarik.train_manager.activities.TrainHandler}: java.lang.NullPointerException: Attempt to read from field 'java.util.Map cz.mendelu.xmarik.train_manager.storage.TrainDb.trains' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3556)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Caused by: java.lang.NullPointerException: Attempt to read from field 'java.util.Map cz.mendelu.xmarik.train_manager.storage.TrainDb.trains' on a null object reference
at cz.mendelu.xmarik.train_manager.activities.TrainHandler.fillHVs(TrainHandler.java:208)
at cz.mendelu.xmarik.train_manager.activities.TrainHandler.onCreate(TrainHandler.java:136)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3531)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Problém i ve stabilní verzi 1.11.
Když server pošle aktualizovaná data hnacího vozidla (asi návěst na návěstním opakovači nebo rychlost), seznam funkcí hnacího vozidla sescrolluje úplně nahoru. Ruší, když má uživatel sescrollováno dolů. Ponechat aktuální pozici v seznamu.
Chyba verzi 1.8 i 1.7
Zařízení: samsung GT-I9195I
E/AndroidRuntime: FATAL EXCEPTION: main
Process: cz.mendelu.xmarik.train_manager, PID: 24803
java.lang.ClassCastException: android.support.v7.widget.TintContextWrapper cannot be cast to cz.mendelu.xmarik.train_manager.activities.TrainHandler
at cz.mendelu.xmarik.train_manager.adapters.FunctionCheckBoxAdapter.chb_onClick(FunctionCheckBoxAdapter.java:84)
at cz.mendelu.xmarik.train_manager.adapters.FunctionCheckBoxAdapter$2.onClick(FunctionCheckBoxAdapter.java:61)
at android.view.View.performClick(View.java:4888)
at android.view.View$PerformClick.run(View.java:19743)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5756)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Simplify into this:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(dateInMillis)));
https://developer.android.com/reference/android/os/AsyncTask
Use the standard java.util.concurrent or Kotlin concurrency utilities instead.
Používá se:
V horizontu následujících let to nepředstavuje žádný problém, ale je dobré tuto skutečnost zvážit při dalším vývoji.
Po zadání loginu aplikace dále nepokračuje v autentizaci
Popis nahlášené chyby:
Uložený server, změnit přihlašovací údaje, připojit (OK), odpojit, přihlašovací údaje jsou opět původní.
Nutno ověřit, pokusit se reprodukovat.
Vůbec se nepoužívá.
V řízení vozidla vypsat vysvětlení kulaté ikonky pro stav vozidla (zelená fajfka, šedý otazník, ...). Buď pomocí krátkého stisku (tak se chová opakovač) nebo pomocí dlouhého stisku zobrazit Toast.
Nouzové zastavení by mělo jít vždy.
Při dodržení následujících kroků aplikace havaruje:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.