I have a great idea for an Android app, but as I’m only familiar with php/js, I’m uncertain of which approach I should choose for creating it. The app will be based on a google map with a lot of position markers. There won’t be any fancy animations or other heavy resource-demanding activities.
As I see it there are three different options:
- Read up on Java and program the whole thing in Java
- Create the map activity in Java as a mapview and then use webviews for the other activities (which can easily be scripted as html5 webpages.)
- Script everything as a webapp (not really an option, as this is not a real mobile app imho.
I’m most keen on using no. 2 as I’m quite familiar with html/php/js/mysql. Have to read up on the html5 specifics, though. Questions:
- I need access to GPS and camera hardware. Is that acheivable in webviews?
- How complicated is it to pass variables between js in webview activities and java in other activities?
- How big a difference in performance can I expect if I use option 1 vs option 2?
- Other thoughts?
Kind regards,
Anders
1) Yes it’s possible, but as commented it will be less accurate and probably slow.
2) Not complicated. Painful if you need loads of interaction between a webview and native app. Using a Javascript Interface that can be set up from the native app. You can basically inject javascript in a webview’s html.
3) Heterogeneity of performance depending on device. Because your implementation will be based on the device’s browser you can expect to get really sluggish behavior for older devices. Anything to do with HTML events (Dragging, Tabbing…) will have a knock on most devices, from my experience.
4) As @vodich comments there are other party frameworks. My benchmarking on PhoneGap and other js-based options is that they’re a waste of time if you are looking at developing a professional app. I haven’t developed on Adobe AIR but find a pain the need to be installing plugins to get native functionality (access to sensors, camera, etc) Mobile is all about fast, responsive behaviour. HDI is your finger, user is fast, so app needs to be fast.
EDIT: So hell yeah! Java FTW!
Albert.