I am developing an offline maps & navigation app for Android as my final year project. The application has to provide transit route planning similar to the way Google Transit does. Currently I am working on a small city as a prototype and efficiency is not an issue right now.
However I'm unaware of any off-the-shelf Java frameworks that would help me implement such a feature, nor am I aware of any algorithms to help me code my own.
Can anyone instruct me on where to start, either by pointing me to code examples of this, or at least routing theory pages to assist me in coding my own?
Theory & Algorithms:
If you haven't already read about it, the shortest path problem is mainly the challenge that most journey planning algorithms are dealing with. On the wiki page, read the "Algorithms" section for a list of possible solutions (Dijkstra's is probably the most popular). There are some algorithm variations specifically for public transport, such as RAPTOR.
Model & Journey Planner:
Depending on the scope of your work, it could be over the top to design a model and to implement the whole journey planner on your own.
I would suggest that you provide your data (stops, connections, times, ...) in the GTFS format (really easy, based on CSV files) and then use a journey planner such as OpenTripPlanner. It takes several planning factors into account and can import the GTFS data that you provide. There is also an Android implementation of OpenTripPlanner, but I'm not sure how advanced it is.
Alternative:
Other than GTFS/OpenTripPlanner, there is a widely used standard in Europe to model transport information, called Transmodel, and supporting planning engines like "JourneyWeb". Many local transport providers (including the one in my city) build their services on top of Transmodel. But I think that would be way harder to implement (plus I'm not sure about licenses and free/open implementations), so I'd stick to the above-mentioned solution.
Related
This might sound a bit of a stupid question, but I'm doing a project where I'm using an ANN to diagnose Sepsis in patients using various vital signs as inputs. The aim is to then develop an Android app that allows a user to put in the inputs and will return a risk score (% likelihood of sepsis, etc)
I'm constructing my ANN using Matlab (using their pattern recognition network wizard), and I'm using MIT App Inventor 2 to build the App itself.
Where I'm struggling, is understanding how one would actually put the ANN into the app. Can anyone explain how this works to me, or even just point me in some vague direction?
There is a matlab-compatible programming language called Octave, and it works on Android as well. You might want to take a look at it, it's called addi.
Matlab/Octave is great for scientific prototyping. Once you enter the realm of mobile applications, the best option is to re-write the libraries in Java. It could be painful but with a proper design you will be able to scale your app without depending in Matlab/Octave hacks.
If this absolutely positively has to be present on Android, on the phone itself, the straightforward way to do this is to write the software in Java and then write the Android GUI around it.
But does the software absolutely need to be on the phone? Maybe. But if not, why not make the Android part a client that communicates with a more powerful and flexible remote server? The server can implement in whatever language it likes.
As I needed to implement "snap GPS location to road" function for an Android application I've modified Android example of https://github.com/graphhopper to suit my needs. It actually did what was expected, but now I'm quite confused about data format i should provide to users device.
Is it possible to provide pbf.osm files? What should I do to provide the user as small data chunks as possible?
Or is this a completely wrong approach to achieve "snap to road" to a native Android app (not web based)?
I'm not that familar with Graphhopper in detail, but please take into account that it's just an routing engine and thus tuned for that purpose.
What you are looking for is a very simple method of 'reverse geocoding' that just returns the clothest point on a road for a given geopos. This doesn't work on a (simplified) routing graph as routers does, but on a optimized structure that is just tuned for geospatial queries. Maybe there are existing offline maps frameworks that already implement it?
I am asking for your advice and a sanity check, please. For a couple of years I have thought about building a mobile site for my own purposes (initially) that will allow me consistent interface on the web and on a mobile phone. My initial target is Android 4 and above.
The central idea is to make notes via web interface. It is easy to
edit on a full PC. Basic formatting is necessary - bold, italic,
lists. I should have some basic editing / adding capability from the phone.
Possibly I might need to add images. This at a later stage.
I will need to use tables.
View these categorised notes on my phone when I need to access that information quickly.
Information should be searchable.
I should be able to categorise that information both hierarchically and by labels.
On the phone the last copy of the information should be available even when there is no internet access. That is the key bit of this project - clear, well structured information, easily available when needed.
So far I have done some 7 websites 6 - 9 years ago and this year I did a responsive design interface with jQuery and HTML5. I have access to Apache on a linux hosting site. I have looked into jQuery Mobile. I think jQuery mobile should be great for my front-end. From my past work with LAMP servers I think I have to have a database backend to this project. What I have looked into so far suggests that the best would be to invest some time in learning Ruby on Rails (which looks very interesting to me) and use that as a back end interface with a database. What database I should use, I don't know. I have in the past used mySQL, also programmed Access and a bit DB2. I have heard a lot of good stuff about postgres. However considering the mobile phone, I think I should go with SQLite probably? What should be the general mechanism for updating the phone from the net?
How does the above look?
Maybe there are some projects which already do something like this?
I don't think I should use some big CMS systems with their bloat and all, because I really want this thing to work for me. Same goes for generic note taking systems such as Evernote. So I am wanting to build it from the ground up, unless there is some similar lightweight project that I could build upon. I am not in a particular hurry, but I am about to get started soon.
A great type of answer for me would be one which tells what major components I should use for this project. It also would be good to know if I am overlooking some important bits.
I appreciate that what I am asking is a large question, but I am not expecting a Wikipedia in response. A sanity check and pointers in the right direction is what I need.
Thank you for your time and thoughts.
What a wall of text... 1.-7. are all achievable by using jquery mobile and HTML5 and a good database architecture as backend. I don't see any BIG problems in your idea. What database you use is up to you, your requirements are not that special, that it would require some specialized product. Any established database backend should do the job.
For updating the content on your phone take a look on HTML Offline Cache and implement an update feature in your Frontend.
I would like to create a custom open source information management application, that I could adapt to practical needs of a psychiatrist. (and also would really like to avoid inventing the wheel). Could someone advise me what would be a good way to start? I have some amateur programming experience (see below), but I have little experience with java and eclipse (which I have set up with Android SDK plugin on my linux PC).
What I would like to achieve is a simple app where I could relatively easily re-program/rearrange information presenting screens. I would like the major development stages to be something like:
Basic framework of the app is done Main information is added
through the programming environment
basic formatting (bold, color, lists) should be supported
I imagine this would be through HTML/CSS markup Hierarchical (not
too deep) screens with concise information about conditions,
treatments; easy, not too cumbersome navigation is a must.
Possibility to attach own notes from android device
on every piece of information (e.g. on medical condition, on medication,
list of differential diagnoses, etc)
A desktop application that allows for easy adding and editing
of the content
initially could be even sqlite manager or something similar
possibility for adding images,
possibility to add rating scales, which would calculate scores
maybe also possibility to print through some android print driver
* in essence I envision this as a sort of an integrated website with a relatively simple database behind it (sqlite?) running on android. My models would be epocrates and medscape apps, but the content would be more specific to everyday psychiatric practice. It would include aspects of psychological therapies as well.
In about a years time, I think, the content would be interesting enough to see whether the app should go on the market.
My (limited) experience:
I am a MD - a Psychiatrist. I have some amateur development experience (php, html, css, Perl, bash, sed, sql, Access and some time ago - AS/400). I would like to start an app that I could modify as I go - in order to have the most useful info at my fingertips, when I need it in my work. I have considered some databases (e.g. HandDB) but my experience with them is that you get very constricted with their user interface and this hinders fast information retrieval when you need it. Adding information can be clumsy as well.
Why I am asking for help here
Most of tasks above seem pretty standard. I imagine that people with lots of programming experience here, probably would be able to point me towards some information that would help me to get started.
Many thanks for considering this :)
Are you going to develop this app? Everything you mentioned can be easily done by reading the android documentation. Although if its you doing the coding i recommend buying a book
You will find a lot of samples and other support in the android doc
Printing can be also setup using Google Cloud print
If you want to open source your application you can always use google code.
You have asked a really broad question here. But i guess the above information is good to get you started.
I'm trying to develop an Android app that could be used by advocacy groups or campaigners such that they would be able to create their own forms (surveys) for which they can go out canvassing and collect opinion data from people who don't have Internet connections and thus can't take surveys/polls online. Could also be used at events or anything else that requires data collection "in the field"
The benefit is allowing data collection on the spot without having to transfer data from paper to the office computer by hand.
I've been looking over this tutorial by Frank Abelson: http://www.ibm.com/developerworks/xml/tutorials/x-andddyntut/section6.html
And have also been pouring through the Open Data Kit, but the ODK is a little more intense than I am prepared for and the Abelson tutorial doesn't discuss much how users could create their own forms.
I suppose users could just create their own XML files for custom forms in the office and store them on the server, but I was wondering if there was a way for them to do this on the Android app?
Just a hint about possible architecture or simple resources would be helpful, I am having a hard time picturing the solution at the moment.
i'm one of the developers of open data kit. odk has been successfully deployed by organizations all around the world for exactly what you describe.
we have a graphical form designer (and good alternatives in purcforms and xls2xforms), a server to host the forms, and an android mobile client (and good alternatives in javarosa). all the pieces are free, open source, and are driven by an active community.
if you could list what specifically about odk doesn't fit your needs (say, a need form design on the phone), i'd be could recommend alternatives...
ODK is a fantastic open source solution. A potential commercial alternative you can also try is Canvas at http://www.gocanvas.com which allows you to replace paper based forms with your mobile device.
It currently runs on Android, Windows Mobile and BlackBerry with iPhone and iPad support coming soon.
To get a quick overview of how to use Canvas:
Build a standard data collection app in 5 minutes and see it running on BlackBerry
Build a signature capture app in 5 minutes and see it running on Android
Hope that helps some,
-Chris
You should look into Fulcrum. I believe there is a 30 day trial period see if this software works for you. This is a one stop shop for mobile data collection teams. You can easily build your data collection forms right from your web account to include photo fields, text entry fields, choice fields, form sections, and repeatable sections. Repeatable, meaning parent-child relationships within a single data point.
They even have an App Gallery with a exemplary apps (forms) that allow you to use as a sort of "cheat-sheet" to get started. Here is the political canvassing survey they posted.
-P.Reyes
Check my project here: https://github.com/AndreiD/surveylib
PROS: Simple solution, open source, without any overkill, you don't have to display any logos, it doesn't cost a thing, it's easy to be extended, material design etc.
CONS: You must have the server part, for the transmission of the answers data.