[Q] Which platform and what implementation method to choose - Java for Android App Development

Hi,
New here and generally new to the mobile application development scene. I just begun my thesis for my last year and one of its components is to develop a mobile version of the "program" that we're working on. Since I have no idea where to start and what platform/tools/method to use I'm asking here for advice. The teacher gave me some papers to study on and I must say I'm quite confused.
First let me give you a fast explanation of what I'm trying to achieve. What I'm making is an application for online voting on the decisions the student council takes. What this means is that instead of having to meet up every other week the members of the council will be able to post their ideas and proposals online, people will be able to ask questions and then they will be able to vote for whomever they want. This will be accessible from both a PC and a mobile device. One of the most important factors here is the security of the application/program since it is paramount that no votes are lost, counterfeited, deleted, changed or w/e. After that we're also gonna need database support since everyone will have their personal account and other than that it's gonna be somewhat like a small forum.
So the idea at first was to develop this in applet form (not sure if my terminology is correct on some stuff please correct me if i'm wrong) and embed it into a web site, accessible by everyone. However the professor that's overviewing the project also asked to make it so that people can use this from their mobile devices, so here we are. I've read on the different implementation methods (like native and web based) etc. and I also read up on cross platform development tools like phonegap and titanium and that's where the confusion starts.
First of all we want this to be accessible by almost everyone regardless if they're using iOS, Android, Symbian etc. If that's impossible at least iOS and Android is mandatory. Starting from there, native development tools are probably a no go since they require different versions of the program for each OS and possible device type. On the other hand the cross platform approach apparently doesn't offer good security (not exactly sure where that weakness comes from) and that is something we're trying to avoid. However I'm not sure if I've understood this correctly and I might be misinterpreting. Anyway, concluding it seemed to me that developing this as a web-application seems to be the best decision. If I go that route what exactly am I looking to do? Where do I start? Do i just make stuff in java and make a webpage via HTML 5 and add stuff in? I'll look online for tutorials on this but I'm not exactly sure where to start so I'm asking here.
Thanks in advance!

Unless there's a specific reason for wanting mobile apps then I'd recommend doing this as a website, making it responsive so that it's mobile friendly. That way it will play with all the mobile platforms, and all PC based OSs, with just 1 code base. Then the only choice you have to make is the server side code, which is what would handle all the database access and security etc.. The most obvious choices for that are PHP or C#/VB.Net. Both the platform and your own preference are what should make that decision.
Either way, whether you make a mobile app or a responsive website, you'll still need a server to do the data access and security for you. There's tons of good resources and I couldn't recommend Stack Overflow any higher than I do. Just make sure, if you ask any questions on there, that you know how to ask a good question, or you'll get downvoted and the question closed!
I hope this helps - good luck

If you want security in your mobile app as the most prominent feature, you'd have to rely on Native codes(Java/Objective-C). Cross-platform tools are no good when security does matters. Also it normally takes much less time to create some app in Native code than to create it in cross-platform tools, since most of the UI are at your disposal. Acc. to my personal experience cross-platform thing is good if you already have a previous source code available and are trying to port it on mobile.(Such as having a HTML website and trying to port it on phonegap will make sense)
That's just my opinion, other people may disagree with this.
Making a mobile friendly website is another choice as explained in previous post.

Archer said:
Unless there's a specific .... or C#/VB.Net. Both the platform and your own preference are what should make that decision.
Click to expand...
Click to collapse
Might elaborating a bit on why use C#? Is it better when it comes to coding server side stuff? We were discussing what language to use with my professor and since he teaches OOP via Java he favors it a lot. However if it has drawbacks compared to the .NET stuff I'd like to know so that I can discuss it with him.
Also this project is part of a thesis and I'm pretty sure the professor wants to add the mobile application part just for the research and development process. It seemed to me that it was redundant too but I'm gonna guess he won't take no as an answer... Gonna have to discuss it more
Thanks for the replies so far!

jokeaccount said:
Might elaborating a bit on why use C#? Is it better when it comes to coding server side stuff? We were discussing what language to use with my professor and since he teaches OOP via Java he favors it a lot. However if it has drawbacks compared to the .NET stuff I'd like to know so that I can discuss it with him.
Also this project is part of a thesis and I'm pretty sure the professor wants to add the mobile application part just for the research and development process. It seemed to me that it was redundant too but I'm gonna guess he won't take no as an answer... Gonna have to discuss it more
Thanks for the replies so far!
Click to expand...
Click to collapse
I did think it may be a case of him wanting you to do some mobile work, as well as web work. It does make sense if it's meant to be for the purpose of learning and experience.
I mentioned C# purely as an example of a server-side language, like PHP. You should really look at using whatever you're most comfortable and/or familiar with. I do use C# on a daily basis as a server-side language and it's very simple to write methods that take post data and return whatever is required (usually a JSON response), whether it be a web service with exposed public functions, or a generic handler. There's tons and tons of ways of doing it so you need to really decide what suits you and the environment you'll be working in.
I'm not familiar with using Java as a server language so I can't comment on that.

Related

Developing Debate

Hello there, I've already posted this into another forum but I've been told that this is the place to put this question so here we go
Okay, so I'm starting to develop apps for my XDA2 and having come from a standard PC development background I was always told that software should uphold the basic principles of software quality IE reliability, reusability, maintenance and so on
I thought it would be an idea to here from people that develop for the mobile platform weather they feel it is possible to develop apps with these software engineering fundamentals.
Do we have to abandon object orientated programming, and go back to the procedures in order to develop?
Sorry if this is a, a silly debate, or b, been talked about before
lets have ya
And here is an excert from a reply from on off the board members
Rudegar:
Some people use gcc some people use win stk
where you have to make oo from the buttom if you want being that both are c++ it's by far impossible
and some program mfc and .net where oo is very much a part of the way things are don of cause using these tech's you can still program without following the guidelines of oo
Click to expand...
Click to collapse
Why would you abandon OOP?
In my opinion, OO makes the development of any application easier, not to mention the inevitable maintenance/bug fixing/etc. It allows for reusable code, which is a good thing.
I believe one should develop applications in a way independent of the target platform. The main difference is the GUI design, but I believe the GUI is not to be designed by the person who wrote the code.
I.e., the programmer designs and develops the code and functionality, and someone with good understanding of (G)UI/man-machine-interfacing should design the UI (which the programmer subsequently translates into the application)

Ventrilo on Android - Let's make it happen!

Greetings!
My name is Daniel Sloof and together with a group of volunteers we have recently been working on a project called Mangler: a Ventrilo compatible client for linux. Mangler is driven by a C library called libventrilo3 and over the past couple of weeks I have been working on making this library compile with the Android-NDK. I am currently succesfully able to build libventrilo3 as a native library that can be used in Android applications. The JNI wrappers are a little lackluster, but they are being worked on.
The main reason for me posting on this forum (amongst others) is because I am looking for skilled Android/Java developers to assist us in working on this open-source project. We're mostly C programmers that have very little Android experience. I expect we could have something functional up within the month, most of the work has already been done: we're pretty much just writing a GUI for an existing backend (and some audio stuff, which is just feeding PCM to one of the native functions).
Thanks for reading! If by this point you're interested in participating or have any specific questions you can just post them here or drop by on IRC. You can find me on freenode #mangler (alias: danslo).
Im so excited for this project! I hope this goes well.
Time for an update and a quick *bump*.
More progress has been made making libventrilo suitable for Android usage. This primarily involves audio stuff, such as upsampling to rates that Android's AudioRecord doesn't support. Buffering in the Android App is still required but this can be done with minimal effort. Of course all of this (and future) progress can be found on our website.
There have also been some android developers peaking around in the IRC channel but no active developer has yet been found, feel free to drop by.
(PS: To moderators: I am cross-posting this on several Android Forums. If this is considered spam, please feel free to take appropriate measures.)
What is your website, I'd like to track your progress.
tridge said:
What is your website, I'd like to track your progress.
Click to expand...
Click to collapse
To prevent spam to the forums, new users are not permitted to post outside links in their messages. All new user accounts will be verified by moderators before this restriction is removed.
Click to expand...
Click to collapse
You can find us at mangler (dot) org though
<-- so happy to see this!~!!
*bump* - still looking for developers
Bump & small update!
I've just managed to record audio on my android device and send it to our ventrilo test server. Even with just 8khz quality (for testing purposes) the transmission sounds loud and clear on my ventrilo client! There is a small bit of delay but that doesn't seem to be caused by either the connection or the speed of the device (HTC Magic); it can probably be fixed with relative ease.
That being said, looks like we've found an Android developer willing to work on the project, but nothing is for certain so we're still looking for decent Java/Android developers to help out.
And up up we go!
Current revision in our repository can now play received audio transmissions! Once that is worked out nicely, all we'll really need is a decent GUI and some minor modifications (process more library events, etc) and we're good to go.
That spot for Android/Java developer is still available
danslo said:
And up up we go!
Current revision in our repository can now play received audio transmissions! Once that is worked out nicely, all we'll really need is a decent GUI and some minor modifications (process more library events, etc) and we're good to go.
That spot for Android/Java developer is still available
Click to expand...
Click to collapse
Way to go keep up the good work, can't wait to give it a whirl.
People dont seem to understand the potential of this, what a shame. there should be 100 guys clamoring to do this. if i coded i would be all over this.
Looking forward to seeing what comes of this!
xanaviarai said:
People dont seem to understand the potential of this, what a shame. there should be 100 guys clamoring to do this. if i coded i would be all over this.
Click to expand...
Click to collapse
Unfortunately those are the responses we get most of the time Thanks for the support!
I noticed on your website that you recommend Mumble, which I've been a huge fan and contributor since 2007. Any reason not to make Mumble for Android? It's my #1 most wanted app (I've got money on it) and I've heard from quite a few other people who want it, but hardly anyone with the skills/resources to make it happen. Then again it looks like you're in a similar situation, yet still the most qualified.
Pilot_51 said:
I noticed on your website that you recommend Mumble, which I've been a huge fan and contributor since 2007. Any reason not to make Mumble for Android? It's my #1 most wanted app (I've got money on it) and I've heard from quite a few other people who want it, but hardly anyone with the skills/resources to make it happen. Then again it looks like you're in a similar situation, yet still the most qualified.
Click to expand...
Click to collapse
Several reasons:
1) I've never worked on Mumble. (I am very familiar with the ventrilo protocol and written quite a chunk of our ventrilo library)
2) It's written in C++, which is not by default supported by the Android NDK. (unlike libventrilo3 which is written in plain C)
3) Mangler seperates a ventrilo library from its GUI interface, which makes it easy to write seperate interfaces to the same library. As far as I know this is not the case with Mumble.
Don't get me wrong, I (we?) think that Mumble is one of the better alternatives for desktop environments.. but Android places some restrictions that are difficult to overcome with the way Mumble was designed.
I hope that answers your question.
Fair enough. I will continue my search.
As I hear from some developers in the Mumble community, the main limitation is the lack of Qt support for Android, but there may be a way to work around the need for Qt. I'm not a programmer (I hope eventually), so I wouldn't know how difficult such a task would be by any standard.
Pilot_51 said:
Fair enough. I will continue my search.
As I hear from some developers in the Mumble community, the main limitation is the lack of Qt support for Android, but there may be a way to work around the need for Qt. I'm not a programmer (I hope eventually), so I wouldn't know how difficult such a task would be by any standard.
Click to expand...
Click to collapse
There's pretty much a lack of any GUI toolkit on Android (that includes Qt, but also Gtk, wxWidgets, etc). You are pretty much confined to writing it in Java with the Android SDK. Which isn't really a big issue; you want your stuff to feel like -actual- android apps anyway. The real problem with Mumble integration is the Android NDK's lack of proper (official) C++ support and a way of interfacing with the Mumble network protocol without touching any of the audio/gui stuff.
Pilot_51 said:
Fair enough. I will continue my search.
As I hear from some developers in the Mumble community, the main limitation is the lack of Qt support for Android, but there may be a way to work around the need for Qt. I'm not a programmer (I hope eventually), so I wouldn't know how difficult such a task would be by any standard.
Click to expand...
Click to collapse
There is a Qt port for Android underway, so this might help the port once it gets completed.
I've gone off-topic for long enough, but couldn't resist to post. Some dude named pcgod in our mangler IRC channel is working on a Mumble port for Android.. Git repository can be found here:
http://github.com/pcgod/mumble-android
In regards to Mangler... only thing we really still need is a GUI.
Checking out the svn of the project it seems that some work has already been done. Do you only need the GUI now? or the audio stuff too like you wrote in your first post?
EDIT: I just tried it, it manages to login and I can see that there are some users in the test server but how do I start a conversation?

I want to be an Android developer when I grow up.

I want to focus on developing GUIs but I'm not sure where to start. I just read through a few pages of http://source.android.com/ to get more information and it was helpful but I'm still not sure what my skill set should be. I also went through Google's new App inventor and finished all the tutorials but it still seems like a toy.
I can: design interfaces, code javascript, implement XML (weak on C and Java but I get it), create anything using photoshop or any graphic application, color-coordinate, test and implement and write--I can write technical instructions fairly well.
So... that said, what's a typical Android designer's skill-set?
Thanks.
Patience, mellowness and a strong constitution!
The Android development platforms so far available are pretty poor if you're used to something like Visual Studio. The best option seems to be Eclipse running the Android ADT plugin. There is plenty of documentation about how to get it all up and running and it is quite easy to install and configure. The app inventor is a toy for non-developers to create simple applications and it works well for what it is but as soon as you want more complex UIs or more complex code, especially when it comes to using external libraries, you will need to get into Eclipse.
You have the right skills, in fact I would say UI and graphics design is the weakest area for many developers. It is for me. I can write beautiful functional code that does amazing things but my UIs suck unless they are simple. I always need to find someone who can help me with that. In my experience, and I have a lot of commercial code development experience, good UI design is a widely missing skill. It therefore pays well and is highly sought after. You might consider specialising in it?
Be careful going from C to Java. Java is still a pig of a language, do a little googling for "problems with Java" and be especially careful of the fact that Java passes everything by reference unless you use cloning. If you don't always write very loosely coupled methods and are good with encapsulation, this will bite you and often in very difficult to understand ways. I recommend running through each method with only this in mind before you consider the first version of the method complete.
My advice to you is to get Visual Studio Express (they're free), either VB or C#, it really doesn't matter, and become proficient with object oriented programming, proper error handling and scope of objects and variables. Do these things, and assuming that you have the right mindset to create good code, and you'll protect yourself from all the usual bugs that amateur developers introduce.
Then move back to Java. Java is a lot easier to be proficient in when moving from something like VB or C# because whilst frustrating, due to the things you'll miss, you will at least know rather than "not know what you don't know", if that makes sense.
If you are serious about doing this for a living, buy some books by Steve MacGuire.
"Writing Solid Code"
"Debugging the development process"
If every develope could do what these books teach, we would have a much more capable software world.
Good luck!
I have the same question? What do you think will be future programming? Developing web apps like Facebook or Android apps?
How is with work today?
I did banchelors from computer science, and want to try masters now, but I need to choose developing Androids apps or Webapps. I am pretty good at C#, JavaScript, XML.
There's a lot of milage in mobile apps, will be good for many years but there is no doubt that the future is web apps.
Excellent! What a great response. Source.android has a lot of information on what a developer should know but I still can't find information on Android GUI design--specifically. Any advice on this?
Thanks.
I think everyone should learn some c/c++ or other native language. Most will say im crazy for saying this but to appreciate what comes with the languages u mentioned above(which are all managed code) I think you should learn power and use behind native code.
c#, java, .net are all good places to start, i would not go with vb. If you choose to start with c/c++ you will be able to do any of the above easily. Tho others think its harder to learn...I say others bc i have always preferred c/c++ to the above.
Simonta... You rock!
Many Thanks.

[Q] Learning to Dev

I have been a member of XDA for a while and now I want to contribute. I have a basic understanding of computers and want to learn more. Obviously our greatest devs were not born devs they had to learn everything from somewhere. I'm looking for suggestions on where to start on the road to become the best dev I can be. Keep in mind I'm flat broke so I cannot hit up the local bookstore or download any paid software, but with the way the internet is today there must a free legitimate source for everything somewhere. So anyone willing to help a noob If I posted in the wrong section please kindly redirect me rather than flame me. Thanks in advance.
It all depends on what you want to contribute. I'm a beginner myself (only developing since august). It is easy to learn Java, for the most part. I would suggest heading over to http://developer.android.com/index.html for starters. There are many examples and if you want to know something specific, try using the search bar at the top right (it comes in handy). I have already published an app, a simple one, but still an application none the less. I am working on two other projects simultaneously (a live wallpaper and a home-replacement app). You can come to my website http://futurinnovations.blogspot.com/ to see what I'm working on. I am still in the process of learning, and being in college slows things down a bit. Just make sure not to give up. If your stuck, ask someone (or everyone) on forums like this.
Futur Innovations said:
It all depends on what you want to contribute. I'm a beginner myself (only developing since august). It is easy to learn Java, for the most part. I would suggest heading over to http://developer.android.com/index.html for starters. There are many examples and if you want to know something specific, try using the search bar at the top right (it comes in handy). I have already published an app, a simple one, but still an application none the less. I am working on two other projects simultaneously (a live wallpaper and a home-replacement app). You can come to my website http://futurinnovations.blogspot.com/ to see what I'm working on. I am still in the process of learning, and being in college slows things down a bit. Just make sure not to give up. If your stuck, ask someone (or everyone) on forums like this.
Click to expand...
Click to collapse
I forgot to mention I want to learn to dev for Android. I want to start out with simple apps then work my way up to building/porting roms. Also I just downloaded the Java JDK and am using Java's "Greenfoot" Tutorial to get started since I have no experience with Java. And I will be sure to check out your blog and thank you for the reply.
porting and building is something far different from app development...you have to know much more if you want to work with kernel,drivers,basically you have to know everything from hardware level to user level (if you want to be top of the class)...good luck
farukb said:
porting and building is something far different from app development...you have to know much more if you want to work with kernel,drivers,basically you have to know everything from hardware level to user level (if you want to be top of the class)...good luck
Click to expand...
Click to collapse
Well we all gotta start somewhere. Now is probably a good time for me as I'm only 18 and a senior in high school. Since I don't have a job at the moment I have plenty of free time after school and on weekends.
I'm only 18 myself. I started straight with downloading Eclipse and all of the appropriate software for developing and just dove in. I would recommend watching these tutorials: http://www.xtensivearts.com/topics/tutorials/. They helped me A LOT. I am taking a programming in C class in the spring semster, which I am looking forward to. Programming in Java for Android is different than regular programming. It's the same concepts, just different APIs and tools. I like using Eclipse because it is easy to learn and get used to. There are a lot of fancy features like a type of autocorrect (not like on the phone, but smarter). Like you said, just start from the basics, like "Hello World" (Hello Android) and practice creating different layouts using the tutorials given on the Developer site. Explore the site and look through everything because eventually you may need to know where its located for quick access. Just don't set too high of goals for yourself, other wise you might be more prone to give up (like I almost did). Good luck
Im in ths same boat as you we got to start somewhere
mit have a fantastic course in computer science online.
search for MIT open courseware then introduction to computer science.
I'm on 10 now, getting very complicated
crowstar said:
mit have a fantastic course in computer science online.
search for MIT open courseware then introduction to computer science.
I'm on 10 now, getting very complicated
Click to expand...
Click to collapse
Thanks bro I'm checking out that MIT course right now it looks really helpfull
This is a great starting point for Android development, as it deals quite well with getting the Android SDK and Eclipse IDE set up and working together.
http://www.vogella.de/articles/Android/article.html
Futur Innovations said:
I'm only 18 myself. I started straight with downloading Eclipse and all of the appropriate software for developing and just dove in. I would recommend watching these tutorials: http://www.xtensivearts.com/topics/tutorials/. They helped me A LOT. I am taking a programming in C class in the spring semster, which I am looking forward to. Programming in Java for Android is different than regular programming. It's the same concepts, just different APIs and tools. I like using Eclipse because it is easy to learn and get used to. There are a lot of fancy features like a type of autocorrect (not like on the phone, but smarter). Like you said, just start from the basics, like "Hello World" (Hello Android) and practice creating different layouts using the tutorials given on the Developer site. Explore the site and look through everything because eventually you may need to know where its located for quick access. Just don't set too high of goals for yourself, other wise you might be more prone to give up (like I almost did). Good luck
Click to expand...
Click to collapse
Hi, I'm 24. And I learn how to 'program' since 14-15.
It's easy to write apps for Android. But it's hard to write good apps.
You should take Software Engineering course (NOT Computer Science course).
If you take CS (Computer Science) course, than you will learn mainly about algorithm.
But if you enter SE (Software Engineering) course, you will learn about SDLC, software QA/testing, and planning to write programs for living
:-D
I personally don't like eclipse, it's just bloated IDE :-(
I use SciTE, apache ant, MinGW/MSYS (GCC 4.5.0), Java SDK, ActivePerl, Dev-C++ IDE. That's should be enough for development :-D
I will see if there are any software engineer classes at the college I am attending. If so, then I will sign up for it. Thanks for pointing me in the right direction. Is taking the programming class still beneficial?
Sent from my ADR6300 using XDA App
Futur Innovations said:
Is taking the programming class still beneficial?
Click to expand...
Click to collapse
I'd really recommend a class if it's a viable option. It will help you understand object oriented programming, where just working through examples won't actually teach you how to understand what you're doing. Things like classes, inheritance and polymorphism are pretty difficult principles to grasp unless you've got someone to explain them to you. Then it's pretty easy.

[Q] Newbie needs advice on app development

I'm an IT consultant so I'm not a dummie, but I'm not exactly a programmer either.
We need to create an inventory/audit app for an Android tablet. I looked at the Eclipse documentation and I don't think I want to take the time to learn Java well for just this one app. Which leaves me with these options.
Has anybody used Mobiforms to create apps, and would a smart but untrained newbie be able to develop something reasonably quickly? They don't offer a trial version which I find more than annoying.
Should I just outsource the project to somebody in Bangladesh? I have some experience outsourcing.
Any other recommendations on getting an app created relatively quickly?
Thanks!
Or Google App Inventor...
No offense, but the outsource to Bangladesh comment isn't going to win you a lot of friends that aren't in Bangladesh.
I'd say try app inventor and see what you can learn, you'll know in relatively short order if it will do what you need.
Otherwise maybe you're in over your head and someone should outsource you to Bangladesh. ( kidding! ). Seriously though, if you don't find what you need I would hire out at that point.
I don't know much about Mobiforms, but their website looks terrible. Not that a website is the final word on a company but it strikes me as odd at least.
Thanks.
I spent an while with App Inventor. While it is surprisingly useful it lacks one thing that I must have, that being read/write access to the file system.
Today I just discovered Basic4Android and WOW! I haven't coded in basic in many years, but it's still easier to re-learn that than to learn Java from scratch. I'm sure none of the developers here have any interest in it, but for the occasional hobbiest like myself it's a lot easier to start out with. I recommend it for anybody who doesn't plan on making a career of Java programming or who already have a background in BASIC.
I reviewed Mobiforms and not only is their website aweful, but the documentation for it is aweful too. I can't recommend it for anything.
I will probably still outsource this project though.

Categories

Resources