cost effective mobile data collection - java

am having a task for developing an application that uses mobile phone in collection data and the client want to make use of cheapest mobile phone available in the market such as nokia N1280. The application is supposed to send data in a centralized server somewhere then web app for analysis and report generation. The web part there is no problem with me but am struggling to find the best and cost effective methods of collecting data from the field. s there anyone who has an idea of what method could be most effective of data collection? I thought of USSD but am not that familiar with it and am not sure how much it gonna cost my customer. text messages could be a good option but the problem is that it hard to control inputs from the user. Any help?
Thanx in advance..

mobile data collection in developing countries is a fairly well researched problem and there are existing free and open source solutions that have been shown to work at scale (thousands of phones, millions of records). try a site like mobile active to get a sense of the options.
my guess is that you'll likely settle on a javarosa-based system like open data kit using $50-$100 phones and gprs for data.
disclaimer: i work on both javarosa and open data kit.

Related

How to automate login using Android Studio Java

About me
I am a quite a starter but I have worked with Android Studio before; creating simple data scraping apps and more. Bu I was bashed on here once for just asking for answers without trying, that is why I am giving much as effort to make clean as possible. I am not looking for just answers, I was hoping to learn something building this app. Sorry for my terrible English and also thanks in advance!
Infinite Campus
If you haven't heard of Infinite Campus, it is a grading website which students and teachers use. The website is generally great; it gives a lots of informations and it is clean. Besides the website, they also have an app. But the app is terrible. Reason is:
It is Slow: refreshing the data takes too much time.
Less information: for some reason it has less information; like GPA and more.
On Android it just looks terrible
And I decided to create my own app, and hoping to learn new things in the process.
My App
I want my personal App same as Infinite Campus App.
The app is fairly simple, it is only does two things:
Log in
Scrape Data and Display.
The site is: Here
Problem/Question
I do not know where to start.
Do you guys have any good tutorials?
What do I need to learn?
Is the site good for such a thing?
Yes, you can create an Application like that but first, you need to understand your requirements and what are the technologies you are going to use like.
1.) In your Campus App you want to enable the login functionality for that you must have some database where you can store the user information like email and password for this Firebase comes handy with Real-time Database.
2.) you want to store the student's score or test mark for this Again you need to design a database where you can store it so Real-time database from firebase again helps in easy to use integrate.
3.) Next process involves making the UI in android which can be referenced in java where you can implement your business logic.
Useful links you may want to get started
firebase login
realtime database
Using recyclerview for list type things
for displaying drawer menus

Android demo or trial app

im creating an Android app and i want to put it on Google Play. I want the users to download it, use and test it for about 7 days and then, the app will be blocked and the user has to buy it to continue using it.
I've tried with Backup Manager but it didnt work.
Then i read about Licensing (i have a good tutorial already) but i dont know if its what i need.
Other option is to make a subscrition payment to use, but with a free trial, however this is a bad option because the user has to put the payment method and data to use the app.
What do you think guys? can i use Licensing for what i need or better other tecnology?
EDIT:
Maybe i didnt explain myself very good, i want to know if with the Licensing system i can do a trial version of an app for like 7 days. I've tried the other solutions and didnt work for me (Backup Manager, SharedPreferences...) and want to know if Licensing can help me or if its another technology i can use.
There is no direct solutions for what you want.
Google provides a Subscriptions trial with their Subscriptions library, but then the users should pay "regularly" for the content of your app. (weekly, monthly or yearly etc..)
The best option for your use case in my opinion should be this:
You setup your app as FREE on the store
When the user download the app the first time, you create some sort of key which identify your installation on that device
After trial period ends, you can block the app usage until the user purchase an In-App item which re-enable the app functionality.
This is some sort of FREE/PRO version logic which a lot of developers already use in the store.

Desktop Application Video Encryption

I have few questions regarding development of desktop application and I can only access internet for first login where user will authenticate himself. I have an idea that I'll bring in the key used to encrypt videos from online server and save it to local db so key isn't in the code for anyone to inspect.
Is it a good method? As app will be running offline and I don't want anyone to access my videos.
I will have to decrypt one video and play it unless there is some method that decrypt and play on the fly like libmedia does it in android. I have no preference whether I have to develop it in Java or C#. Which language provides better obfuscation keeping in mind that I only need it for windows OS.
Thank you
It sounds like your are trying to develop a sort of light weight DRM solution - unfortunately, this is going to probably be lightweight in the protection it offers also.
For example, if you store the key in the DB it will still be relatively easy for someone to get to it using a regular DB viewing tool.
DRM is not really about making it impossible to copy content - more about making it hard enough to do that it is 'not worth it'.
Depending on how 'secret' or valuable your videos are your approach may be fine - i.e. you may make it enough work to find the key etc that uses won't bother. If your videos were regular studio produced content then they would probably not be happy with this level of protection.
If you do need stronger protection then regular DRM from MS, Adobe and Google etc is available through many of the standard video hosting providers (Brightcove, Ooyla, Kaltura etc) and the DRM they use will support offline playback, which I think is the requirement you have.
They will also all allow decryption and playback 'on the fly' - i.e. you don't have to decrypt the whole video before you play it back (in fact they would typically not do the whole video decryption first anyway as you would then have the whole content in clear stream making it easier to copy).

Java ME on Siemens CX70

I have very old Siemens CX70 in working state and just don't want to throw it out. My idea is to use its math power and peripherals (GSM module, USB, Camera and screen) to build some simple applications for home use (multichannel termometer, timer and cheap security system - for examples).
I know I should use Java ME and IDE (I love Netbeans, for example). Can you tell me what I need more to start developing? I know Java well, I just need to make an environment to developing, debug and deploy. Mobile library documentation will be very helpful too.
Thanks.
There are so many online tutorials about this topic that the only right thing to do is to refer you to google.com
Search after "getting started with j2me".
However, there's something else you should know upfront before getting too excited.
The security model in JavaME will prevent you from doing much useful stuff, in relation to some of the things you mention.
Every time you try to access certain things in the phone, like e.g. the camera, or send SMS, or read/write a file on SD card, etc etc - the phone will show a popup "This app is trying to access camera. Allow this?". And the app will only continue after a manual click on Yes.
As you can imagine, this of course renders a lot of ideas useless.
In order to prevent these popups, you can sign your app with a certificate you buy from Thawte or Verisign. But as that'll cost you $300 a year, it's not the way most sparetime hobby developers chooses.
Personally, I found another way, but it requires you to use a phone from Sony Ericsson.
Because the old Sony Ericsson phones can be patched in order to remove the Java security. After doing this on one of my old phones, I've been having fun making apps like the ones you mention. For example, an app that keeps an eye on my home when we're out, by taking a picture every second. If it detects a difference in the picture, it sends me an MMS with the picture. :-)
I have searched a long time for patching options for other brands, but I just can't find anything useful. Nokia should supposedly also be patchable, but I just can't find anything useful about it.
So in short: If you'd like to make some sparetime hobby apps on a phone like that, you should either find a Sony Ericsson phone and patch it - or go dig up an old used Android device.
Good luck.

Best option for storing data in running application in android [before SQLite]

I'm new to the android development, and programming in general.
I'm developing app to create football statistics for each player, and in the long run I'm using SQLite to store data. However I was wondering if there is a way and if it will make sense, to store data during the run of my application without inserting it to the db, every time user is trying to add new statistics.
Also I'm wondering if there is a point in doing that, my biggest concern is that inserting data to a db all the time will slow down my app, and I would appreciate what more experienced developers do know, and think about this 'issue'
I was trying to research the topic, however all I got was storing data in db, and using SharedPreferences and I don't think that's what I'm looking for, however I can be wrong.
please help.
SQlite is what you're looking for. SharedPreferences are for just that - preferences, not large amounts of stats.
Put your database code in a separate thread and you won't notice any slow down in your app. Ask back here for help on this.
I can't speak to android directly but I have faced similar design issues on iPhone and desktop applications.
It depends on the specifics of the application as to what would be the best way. If your app is mostly about entering plays and saving statistics, I would keep a small set of the latest statistics in memory enough to populate the user interface and then create a "data manager" running on a background thread whose sole purpose was to insert these newly added statistics to the database.
Honestly, I would put it in the DB immediately. With the way android works, if your user navigates to another app (or possibly even receives a phone call) the data they have already entered could be lost.
It is possible to cover that contingency obviously (saving in onPause, etc.), but I've always felt it was safer to get the data into permanent storage as soon as possible. (Note this is a hotly debated topic, I'm merely stating my preference).
Saving to the DB immediately doesn't affect app speed (depending on how much of what type of data you are inserting) so much as battery life. Accessing permanent storage takes more in terms of power as there are several more steps the processor needs to take.
If you do all your DB activities in a thread other than the UI thread the transactions will be almost completely unnoticable in terms of app speed.
If you use implement Loader callbacks it should not slow your application down. Have a look at the Loader classes. They are available through the Android compatibility library.

Categories