Giter Site home page Giter Site logo

kmzbrnoi / hjopandroiddriver Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 4.0 3.42 MB

hJOP Engine Driver for Android

Home Page: https://hjop.kmz-brno.cz/hJOPdriver

License: Apache License 2.0

Java 95.24% Kotlin 4.76%
model railway rails hjop model-railway android application fdroid

hjopandroiddriver's People

Contributors

horacekj avatar kudlav avatar poussinou avatar xmarik1 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hjopandroiddriver's Issues

Indikovat DCC stop v aplikaci

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:

  • 10
  • 5.0.2
  • 4.4.4

Snadnější uvolnění vlaku

@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.

App not responding - ANR Input dispatching timed out

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:

while (context instanceof ContextWrapper) {
if (context instanceof TrainHandler) {
((TrainHandler) context).onFuncChanged(function, chb.isChecked());
break;
}
context = ((ContextWrapper)context).getBaseContext();
}

Bohužel pokud by aplikace necyklila, tak by patrně spadla. Zpětnou vazbu nebylo možné odeslat, nelze reprodukovat.

Original bug report

Activity

activities.TrainHnadler

Caused by

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.)

Možnost zablokovat překlápění v aplikaci; průvodce nastavením

Jenda K.

  • možnost řídit hlasitostí i s vypnutým displejem
    • nebezpečné
  • nezastavovat vlak při překlopení
    • napadají mě 2 možnosti: při překlopení prostě nezastavovat (nelíbí se mi), dát uživateli možnost zablokovat překlápění v nastavení této aplikace (já bych uvítal)

Vladan

  • při prvním spuštění zobrazit průvodce nastavením (možnost zapnout ovládání hlasitostí, volba dark modu, zablokování překlápění)

V menu zobrazit uživatele a server

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ý).

Při změně směru za jízdy zobrazí nesprávnou rychlost

  1. Převzít vlak do ručního řízení
  2. Nastavit rychlost > 1km/h
  3. Změnit směr

-> 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í:

  • Samsung Galaxy A40 Android 10
  • Vodafone Smart prime 6 Android 5.0.2
  • Samsung Galaxy S4 mini Android 4.4.4

hjopdrivererrorswap

Zjednodušit multitrakci

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.

Pád při obnovení aplikace z pozadí

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) 

Aktualizace seznamu funkcí

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.

Pád na Android 4.4.4 při kliknutí na funkci vlaku

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)

AsyncTask a přidružené nástroje jsou deprecated v API 30+

https://developer.android.com/reference/android/os/AsyncTask

Use the standard java.util.concurrent or Kotlin concurrency utilities instead.

Používá se:

public class UDPDiscover extends AsyncTask<String, Server, String> {


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.

Změna přihlašovacích údajů není trvalá

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.

Vysvětlivky stavového kolečka

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.

Aplikace havaruje při pokusu o připojení ke smyšlenému serveru

Při dodržení následujících kroků aplikace havaruje:

  1. V záložce "Vyberte server" vytvořte libovolné smyšlené připojení (název:"1", server:"2")
  2. Spojení uložte
  3. Dlouhým stiskem na uložený server vyvolejte kontextovou nabídku
  4. Zvolte "Připojit"
  5. Aplikace havaruje

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.