rjhdby / motocitizen Goto Github PK
View Code? Open in Web Editor NEWMobile app for motocitizen
License: MIT License
Mobile app for motocitizen
License: MIT License
Если пользователем была нажата кнопка "еду" для данного события.
Если "еду" не нажималось
04-06 14:45:01.366 25466-25537/motocitizen.main E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:121)
at android.app.Dialog.(Dialog.java:107)
at android.app.AlertDialog.(AlertDialog.java:114)
at android.app.AlertDialog.(AlertDialog.java:98)
at android.app.ProgressDialog.(ProgressDialog.java:77)
at motocitizen.network.HttpClient.onPreExecute(HttpClient.java:46)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)
at motocitizen.app.mc.gcm.MCGCMRegistration.storeRegistrationId(MCGCMRegistration.java:144)
at motocitizen.app.mc.gcm.MCGCMRegistration.access$200(MCGCMRegistration.java:28)
at motocitizen.app.mc.gcm.MCGCMRegistration$1.doInBackground(MCGCMRegistration.java:117)
at motocitizen.app.mc.gcm.MCGCMRegistration$1.doInBackground(MCGCMRegistration.java:107)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Вероятно стоит как-то выделить созданный самим пользователем инцидент: цветом, или расположением вверху списка или как-то еще.
Z@y жалуется, что на его маленьком телефоне клавиатура накрывает поле ввода.
Возможно стоит для этого сделать отдельное окно в визарде (без фрейма "что, где, когда").
Когда набираешь сообщение и, не закрывая клавиатуру переходишь на другую вкладку - клавиатура остается на экране.
"mc.distance.show", "200"
"mc.distance.alarm", "20"
Сейчас при уходе в фон геопозиционирование выключается. Надо сделать что-бы работало, но в максимально энергосберегающем режиме
Открываю "детали", начинаю писать сообщение. Не отправляя его перехожу в другой инцидент, И наблюдаю там не дописанный текст.
Приложение отправляет acc_status_act
Но при обновлении инцидентов получает: {"error":"no_new"}
Обеспечить уникальность статуса "выехал" для каждого пользователя. Если выехал на одно событие, а потом на другое - у первого менять статус на "был на месте/выезжал" в зависимости от того, доехал ли на него.
Ну и, собственно, не отключать его, если галка стоит и открыта вкладка с картой.
Не удобно отлаживаться когда оно все время засыпает.
Код есть, сделаю сам.
{"result":"18801 \n\n<TITLE>Unauthorized</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n
Дать возможность модераторам "MCAuth.isModerator()" корректировать события созданные другими пользователями. адрес/координаты/тип/медицину/описание.
Начинаем создавать новый инцидент. Сворачиваем приложение, возвращаем обратно и оказываемся на "главном" экране. Не дописанный инцидент исчезает.
Надеюсь исправить, т.к. как раз примерно в этом месте сейчас ведется рефакторинг.
Например после нажатия "выехал". Вызывается mcaccidents / getlist в котром возвращется измененный инцидент. Думаю, что это лишнее. Применилось ли это изменение можно понять по позвращаемому результату отправки "выехал".
А если кто-то за это время тоже изменил инциден то должен придти пуш.
наверное стоит вынести parseSendMessageResponse и parseOnwayResponse из MCListener в соответствующие классы
03-29 14:00:19.081 1856-1856/motocitizen.main D/POST﹕ lon=37.62273406982422&distance=10&calledMethod=getlist&user=rjhdby&lat=55.752296447753906
03-29 14:00:19.281 1856-1856/motocitizen.main D/JSON ERROR﹕ 200
03-29 14:00:19.281 1856-1856/motocitizen.main D/JSON RESPONSE﹕ {"list":[{"error":"no_new"}]}
У нас минимальный API 12, а PreferenceActivity начиная с 11 является depricated
Сделать парсинг сообщений/инцедентов, чтоб можно было по клику перейти по ссылке в сообщении
Читаю форум, народ пуши не видит, но бывает, что просто связи нет. Нужно напридумать уведомлений и проверок.
Ввел логин/пароль, нажал войти. Вошло, отрисовало главный экран, но клавиатура не скрылась.
Сделать возможным создавать событие с флагом "для статистики".
Необходимо продумать функционал.
Вероятно я перестарался. М.б. имеет смысл асинхронность оставить, просто выключить отображение диалога, а выводить ошибку в случае неудачи.
Обычно шестеренка это доступ к настройкам. У нас же это меню. Думаю, что стоит либо оставить шестеренку, но сделать чтобы под ней настройки открывались, либо заменить на три горизонтальные линии либо три вертикальные точки, как это сделано в UI на планшетах.
Длина экватора земли 40.075км. Имеет смысл подумать над ограничением на ввод дистанции. 20.038км на планете земля достаточно :)
Попробую сейчас сделать.
3530-3530/motocitizen.main E/WindowManager﹕ Activity motocitizen.startup.Startup has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@423d0198 that was originally added here
android.view.WindowLeaked: Activity motocitizen.startup.Startup has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@423d0198 that was originally added here
at android.view.ViewRootImpl.(ViewRootImpl.java:374)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
at android.view.Window$LocalWindowManager.addView(Window.java:547)
at android.app.Dialog.show(Dialog.java:277)
at motocitizen.network.HttpClient.onPreExecute(HttpClient.java:50)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)
at motocitizen.startup.Startup.onResume(Startup.java:93)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
at android.app.Activity.performResume(Activity.java:5082)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2573)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.access$600(ActivityThread.java:133)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4794)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
at motocitizen.startup.Startup.onResume(Startup.java:93)
if (request != null) {
(new IncidentRequest()).execute(request);
}
03-29 14:00:19.081 1856-1856/motocitizen.main D/POST﹕ lon=37.62273406982422&distance=10&calledMethod=getlist&user=rjhdby&lat=55.752296447753906
03-29 14:00:19.281 1856-1856/motocitizen.main D/JSON ERROR﹕ 200
03-29 14:00:19.281 1856-1856/motocitizen.main D/JSON RESPONSE﹕ {"list":[{"error":"no_new"}]}
.........
03-29 14:00:19.911 1856-1856/motocitizen.main D/POST﹕ lon=37.62273406982422&distance=10&calledMethod=getlist&user=rjhdby&lat=55.752296447753906
03-29 14:00:20.021 1856-1856/motocitizen.main D/JSON ERROR﹕ 200
03-29 14:00:20.021 1856-1856/motocitizen.main D/JSON RESPONSE﹕ {"list":[{"error":"no_new"}]}
Может быть стоит в будущем доработать окно угона, добавив там поля:
*Производитель
*Год выпуска
*Приметы
*Фото
и т.д.
Приозводитель - выпадающий список, можно будет статистику какую-то собирать.
Фото - мы "попадаем" на дисковое пространство. Но с другой стороны и так на форуме народ фото может публиковать.
Должна ли быть возможность "выехал" для скрытого инцидента? Мне это удалось для вчерашнего (угон, Леволинейная)
Пользователь задает периоды времени, когда события (не) должны приходить, делать звуковое оповещение.
Надо продумать, как лучше реализовать.
Там и так ввод всего одна строка, да и ту у меня 1/3 кнопка занимает.
Может быть стоить когда-нибудь сделать возможность игнорировать изменения по инциденту. Отображать его серым цветом, пуши на него не приходят и из "getlist" он тоже исключен.
Карта открывается в максимальном отдалении
Реализовал смену карты через настройки: https://github.com/elagin/motocitizen/tree/maps_settings
Объект пересоздается, но до перезапуска приложения карта продолжает отображаться старая.
Пока не актуально, но все же.
В настройках выбрана карта OSM (на закладке "карта", отображается именно эта карта), создаю новый инцидент, выбираю "уточнить адрес" - открывается карта Google.
Приложение долго загружается (сервый экран).
Надо разобраться с алгоритмом запуска, что-то перенести ближе к концу, чтобы Activity раньше нарисовалось, а потом уже запросы отправлялись.
При наборе этого инцидента изчезает слово "ДТП" в globalText.
Надеюсь исправить в последующем рефакторинге.
Например если пользователь не указал ни одного типа инцидентов.
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.