Android: Reading, using and working with XML data and web services in Android

Posted July 19th @ 8:37 pm by Boyan Tsolov

One of the most powerful aspects of any mobile application for a 3G phone is that it can connect to the Internet. By connecting to the Internet the application can offer much more value to the user since it becomes an interface for a web-based component, e.g. using Twitter’s API to create a Twitter application so that you can get your Twitter updates without having to open the mobile browser. The most common way of interfacing with a web-based component is by using web services in XML format.

While trying to developer my own app which reads a web service from my own server, I ran into a lot of difficulties in implementing the client that consumes the web service. Android does not have libraries for XPath handling of XML documents, so it makes deciphering XML data a little bit more difficult. From what I’ve read online the Android team is currently working on including such libraries in future versions.

After some digging around I found an amazing link that shows different methods for consuming an XML file in Android and parsing through it without the use of XPaths. The link is this: Working with XML on Android. To start off, this link is an absolute must-read. Everything that I am going to write in my post here relates to this link. The code offered on that webpage uses polymorphism to show you 4 different methods of working with XML data. It provides a fully-functional Android application and all the source code for it. The source code can be found here: AndroidXML.zip.

My post today will concentrate on how to customize the code from the application in the above link, in order to read and parse your own XML data. If you are a Java pro, you might not need this post. My Java is a little rusty, so I needed some time to figure out exactly what I had to change and where in order to get this to work with my own web service XML. Now that I’ve figured it out, I thought I’d share it. In my next post I will give the simplified version of this code – where there is no polymorphism, and thus there are only the minimum number of classes needed to implement this XML-reading solution. I can’t offer this simplified code right now – because I haven’t coded it yet :).

So until I post the simplified source code for working with XML data in Android, here are some tips on getting through the larger polymorphism-based source code and customizing it for your own XML data:

Read the rest of this entry »


Advertisement


Android: Creating TableRow rows inside a TableLayout programatically

Posted July 1st @ 10:07 pm by Boyan Tsolov

In my quest to create a “Taxman” Android application I ran into the following problem:

I want to ask the user to enter their yearly income, after which the screen will flip and their after-tax income will be displayed in a table format for all Canadian provinces. (And for the future: all US states). The problem I ran into is creating a TableRow for each Canadian province in my main.xml. There are 13 provinces and territories, so 13 is not that bad to copy & paste in the main.xml; however, as soon as I have to copy & paste more than 2 times I start cringing and nausea kicks in. Personally I think “copy & paste” should not be in the programming vocabulary. Not only that, but I have 13 provinces now, what about when I have to enter 50 states! So, I had to find a way to create these new TableRow rows programmatically inside my TableLayout layout.

A great source for code snippets and answers to Android questions is http://www.anddev.org. I’m sure if you’re dabbling with Android then you’ve already come across this site. The particular post I read to do this is this one: Dynamically add rows to TableLayout. Commenters on that post were having problems getting this to work, but after I imported all the correct classes (android.widget.TableRow.LayoutParams is an important one to use) everything worked from the first time. I forced Eclipse to find most of the classes for me.

Below is the code from anddev.org, with my changes for my Taxman Android app. I’m too lazy to do a full-out beginning-to-end tutorial for this code snippet.

First I set my constants at the top of the Activity class:

public class Activity1 extends Activity implements OnTouchListener{

    int PROVINCE_Alberta = 0;
    int PROVINCE_BC = 1;
    int PROVINCE_Manitoba = 2;
    int PROVINCE_NewBrunswick = 3;
    int PROVINCE_Newfoundland = 4;
    int PROVINCE_Northwest = 5;
    int PROVINCE_NovaScotia = 6;
    int PROVINCE_Nunavut = 7;
    int PROVINCE_Ontario = 8;
    int PROVINCE_PEI = 9;
    int PROVINCE_Quebec = 10;
    int PROVINCE_Saskatchewan = 11;
    int PROVINCE_Yukon = 12;

    int numProvinces = 13;

Read the rest of this entry »


Android: Switching screens by dragging over the touch screen

Posted May 29th @ 12:17 am by Boyan Tsolov

In this post I will show you how to use the touch screen so that you can drag your finger across the screen, and it will switch the screen for you – “iPhone style”!

For this I will be implemented OnTouchListener and overrided the method OnTouch().

To start off, we need to create an Activity with two screens. The two screens will be implemented using a ViewFlipper in the main.xml layout file. Follow the steps in this blog post to set yourself up: Android: Switching screens in an Activity with animations (using ViewFlipper).

1. Now that you have yourself set up, open the Activity1 class.

2. Make the class implement OnTouchListener. The top of the class will look like this:

...
import android.view.View.OnTouchListener;

public class Activity1 extends Activity implements OnTouchListener{
...

2. You will have to override the OnTouch() method as well. If you were using eclipse, it might have created the method stub for you:

    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        // TODO Auto-generated method stub
        return false;
    }

Here is the method that you need to use instead:

    public boolean onTouch(View arg0, MotionEvent arg1) {

        // Get the action that was done on this touch event
        switch (arg1.getAction())
        {
            case MotionEvent.ACTION_DOWN:
            {
                // store the X value when the user's finger was pressed down
                downXValue = arg1.getX();
                break;
            }

            case MotionEvent.ACTION_UP:
            {
                // Get the X value when the user released his/her finger
                float currentX = arg1.getX();            

                // going backwards: pushing stuff to the right
                if (downXValue < currentX)
                {
                    // Get a reference to the ViewFlipper
                     ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
                     // Set the animation
                      vf.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
                      // Flip!
                      vf.showPrevious();
                }

                // going forwards: pushing stuff to the left
                if (downXValue > currentX)
                {
                    // Get a reference to the ViewFlipper
                    ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
                     // Set the animation
                     vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
                      // Flip!
                     vf.showNext();
                }
                break;
            }
        }

        // if you return false, these actions will not be recorded
        return true;
    }

What I’ve done is added a CASE statement. On press down of the finger we save the current X value. On press up of the finger, after the dragging motion has finished, I check the X value again. I compare the two X values and I make a logical decision whether I should switch the screens forwards or backwards.

Read the rest of this entry »


Android: Switching screens in an Activity with animations (using ViewFlipper)

Posted May 26th @ 11:48 pm by Boyan Tsolov

In this post I’ll show you how to add animations when trying to switch between screens. Usually when you switch between screens it’s a direct “poof” and the new screen appears in a very un-graceful way. The SDK offers a bunch of easy-to-use animations, and I’ll show you how to use them here.

I tried doing animations on the opening and closing of activities, but I haven’t figured that out yet fully. So instead, I will show you how to use animations when switching on objects/layers inside the same activity. It will still look like you are switching screens, but all the layout data will be in one single XML. If we were to switch between activities, each activity would have had (usually) its own layout XML.

And in the post coming after this one, I’ll show you how to start this animation and switch the screen while dragging your fingers on the touch screen. Let me be a little more precise: while dragging one finger on the touch screen. I’m not sure if the OS handles multi-touch right now – or if that’s something the device has to enable – or both.

Back to the topic: how to switch between layers using animations to make it look like you are changing screens… we will be using a ViewFlipper widget in the layout XML.

1. Create a new Android project, unless you already have one

01 new project

2. Create a new Activity class that extends android.app.Activity.

02 new class

Read the rest of this entry »


Android: Reading Logs and Exceptions

Posted May 24th @ 11:21 pm by Boyan Tsolov

While developing my Android apps I routinely, regularly, almost every time, without a miss, get some kind of exception. And the error you see on screen is not developer friendly, though it is very end-user friendly:

01 error

WTF? Why? What did I do wrong this time, again?

Read the rest of this entry »


Android: How to switch between Activities

Posted May 24th @ 10:38 pm by Boyan Tsolov

In my great expectations of Google Android coming to Canada on June 2nd, I’ve started experimenting with developing some apps for the Android platform. My first app is called “The Taxman” and will calculate the amount of tax you owe per year in your province/state – well only Canada for now.

I had trouble adjusting to what an “Activity” was and how to handle it. Here is a quick and dirty way to create an Activity, and to switch to another Activity (think of it as another screen) on the click of a button.

1. Create a new Android project – or you might already have one created.

01 new project

2. Add a new Class that extends android.app.Activity. You need a total of two classes that extend Activity. You will switch from one Activity to another.

02 new class

03 new class 2

Read the rest of this entry »


Developer’s Perspective on Android: Getting Started

Posted May 24th @ 9:49 pm by Boyan Tsolov

Google Android

I’ve been a fan of Google’s mobile operating system Android for quite a while – technically since I heard about it 2 years ago. I’ve been unfortunate to live in Canada, because none of the telco companies here have carried any phones with Android (only HTC phones for now, but Samsung seems to be coming out with something soon).

But, on June 2nd 2009 Rogers is coming out with the HTC Dream and the HTC Magic and Google Android will be here! And on June 3rd Google Android will be in my hands. [I’m not going to be a geek and get it on the very first day it comes out, come on!]

So, in expectation of this date, I started playing around with Android and developing my own applications. To start off, it’s been absolutely easy, pleasant, and a breeze to setup. It was like stealing candy from a kid. I followed the instructions from the Android – Developers website and using Eclipse as my environment I was creating mobile applications in less than 30 mins.

To get the SDK follow this link: http://developer.android.com/sdk/1.5_r2/index.html
To read the installation instructions follow this link: http://developer.android.com/sdk/1.5_r2/installing.html
And I recommend using Eclipse if you do want to get the “30 mins effect”.

I wanted to test out the different functions/features that Android offers out of the box, so I thought of a simple app which would allow me to have a goal and thus opportunities to experiment. I am going to write a “tax” application. Unfortunately, this tax application will not fill out your taxes. It will calculate how much the government has to take from you each year. You will enter your country (Canada only for now), you will enter your income, and the result will be a summary of your take-home pay and taxes due, by province (or states for the US – eventually). I’m going to call it “The Taxman”.

I’ve just started this mini app, and as I go along I will post snippets of code that I found difficult to come up with – to help out anyone that is looking for the exact same solution. Also, I have a full-time job, so it will take me a month to complete this silly app :), so my posts might be infrequent.

This weekend I had a chance to start it off and I had trouble with a couple of things. I will write a separate post on each one over the next couple of weeks. Here’s three of those things:

1. How to switch from one screen to another (also called Activities)

2. How to switch screens with an animation effect

3. How to switch screens using a dragging motion with your finger – you know, iPhone stylez.

That’s it for now… those 3 posts will be coming out very, very soon!



Advertisement

Options:

Colors

  • does d cause impotence
  • bid
  • cold sore dose
  • krymas kaina
  • dosage for a dog
  • and
  • difference between
  • msds tablets
  • ds
  • contro i pidocchi
  • hct tab 32-12.5
  • lek
  • timberland white
  • buy uk
  • low dose hormonal acne
  • dosage kids
  • ds missed dose
  • malarone pregnancy
  • therapeutic serum level range
  • tmj pain
  • kegunaan
  • 30 mg 14 tablet
  • starter pack dosage
  • can you take and together
  • patient information sheet
  • first day taking
  • not working
  • tablets
  • side effects increased appetite
  • fruit juice commercial
  • normal dose of for bladder infection
  • achilles heel
  • bill kaulitz overdose
  • band russia
  • teratogenic effects
  • can i take and advil
  • will raise my blood pressure
  • skin side effects
  • and at same time
  • generation kennett square
  • chlamydia pneumoniae
  • 5 follicules
  • for withdrawal from opiates
  • can you take vitamin b while
  • used high fsh levels
  • vs zoloft for anxiety
  • dosage
  • and lupus
  • ampollas novartis
  • quickly does work
  • cream ebay
  • alcohol detox
  • banda cristiana
  • dosages available
  • calcium channel blockers
  • drug interaction
  • once a day
  • a inne leki
  • zoloft vs social anxiety
  • and bipolar
  • not effective 2009
  • taking provera with
  • when doesn't work
  • for severe depression
  • o que A
  • dog
  • product information australia
  • used for opiate withdrawal
  • reviews side effects
  • can u smoke weed while on
  • relief uk
  • contre indication
  • vitamin c
  • fast oral jelly
  • ad anti-dandruff shampoo 7 oz
  • menopause symptoms
  • odt kit orange
  • taking
  • source
  • and uterine lining thin
  • generic
  • vs
  • gonal f iui
  • keramag nr. 1 flachspA?l-wc wandhAngend
  • twitter
  • mechanism of action
  • launch date
  • can you take tums
  • relprevv pharmacokinetics
  • relief mr spc
  • accidentally took 1200 mg of
  • patient assistance form
  • can you take same time
  • cheap
  • ec 500
  • chances of twins on 100mg
  • what is the maximum daily dose of
  • mania
  • pregnancy calculator using
  • para sirve d
  • como age o no aborto
  • canadian pharmacy no prescription
  • can i mix and allegra
  • pomata costo
  • missed pill
  • drug manufacturer
  • taking after ectopic
  • liquid taste
  • 2 months in
  • side effects liver
  • for pcos side effects
  • treatment for osteoarthritis
  • success stories
  • for uti prophylaxis
  • hct urination
  • can take nattokinase
  • correction albumin calculator
  • deaths children
  • birth control acne
  • e trittico
  • discontinuation symptoms
  • informacion en espanol
  • max dose consta
  • bula composiAA?o
  • rash sun
  • technology ga
  • about medication
  • used for chlamydia
  • chemical structure
  • 4 weeks on
  • vs stroke prevention
  • buy no prescription
  • 1 por dia
  • frova
  • use 2 jelly intercourse
  • side effects stroke
  • 3mg
  • to treat uti in men
  • direct branford ct
  • inr levels
  • side effects stopping suddenly
  • cold medicine while
  • 5 mg
  • can i take extra to lose weight
  • will show up on a drug test
  • taking together
  • rapaflo and the same
  • generic release date november
  • 40 mg
  • walmart pharmacy generic
  • combined with iui success rates
  • ambien interaction
  • withdrawal---headaches
  • eltroxin
  • thyroid disease
  • in early pregnancy
  • 0.25mg
  • active ingredient
  • contraindications
  • as a histamine blocker
  • switching
  • can you drink beer while on
  • starter pack dosage
  • menstrual cramps
  • m aventis
  • samples for physicians
  • coupon
  • when is going generic in usa
  • herpes transmission study
  • can you take together
  • severe constipation
  • are and the same
  • difference between and
  • westcort
  • simplex 1 herpes
  • and provera for infertility
  • chlamydia pneumoniae
  • brain zaps withdrawal
  • and interaction
  • otc twice a day
  • a xyzal
  • buy from india
  • buy vancouver bc
  • side effects pregnant women
  • too much dry mouth
  • will show up drug test
  • la 4mg capsules
  • memory loss
  • does cause night sweats
  • vs
  • hcg pct
  • liquid dosage for children
  • rebate
  • aumenta a prolactina
  • alternatives
  • my yahoo account sending spam
  • peanut allergy
  • prn
  • para que sirve el tabletas
  • herpes genitale e
  • high blood pressure tablets
  • tinea versicolor treatment
  • through iv
  • can you take while your pregnant
  • 20 mg price cvs
  • vs
  • adhd treatment
  • why doesn't work for some men
  • package insert
  • herpes genitalis
  • irregular heartbeat
  • 6 mp and
  • trip report
  • autism side effects
  • for a 6 year old
  • sublingual canada
  • planters warts
  • starter kit orange
  • what is drug
  • tablets sale
  • mixing and poppers
  • does have a generic brand
  • 70 mg
  • doesn't work
  • pronunciation
  • dosage for ibs
  • no side effects
  • clonazepam and combination
  • dosage 0.5mg
  • cheaper than
  • e gh
  • difference between ds septra ds
  • daily vs 36 hour
  • ds side effects in children
  • will cause diarrhea
  • results 3 months
  • versus
  • interaction between benadryl
  • symptoms of pregnancy on
  • can you take with
  • cheapest
  • syrup
  • and for pct
  • questions
  • buy online
  • antibiotic cost
  • indications and usage
  • chloride vs. la
  • children's suspension
  • libido cure
  • signs and symptoms of high level
  • most effective way use
  • krople ulotka dawkowanie
  • price for 10mg
  • uses and side effects
  • vitamin e capsules
  • ac 120 mg
  • alternative cat bite
  • side effects sun exposure
  • equivalent dose
  • made my headache worse
  • for pneumonia in children
  • can take oxycodone
  • is it safe to take benadryl with
  • information birth control pill
  • unterschied
  • que es el medicamento
  • taking later than day 5
  • conversion
  • and together
  • leg edema
  • snorting
  • tac dung thuoc
  • for acne does it work
  • and weight gain
  • cure
  • e sport
  • sore throat after
  • neuroleptic malignant
  • syrup
  • para que mas sirve el
  • dosage mims
  • blurred vision
  • vs anyone
  • prix 20 mg
  • reverse hair loss
  • janssen pharmaceutical
  • 12.5 mg tablets
  • generic ingredients
  • buy uk
  • zombie
  • que es 0.5 mg
  • online canada
  • do people take to get high
  • hair loss
  • herbal 8000 mg
  • slow release
  • taking for allergies
  • 200mg capsules
  • side effects 10 20 mg
  • does snorting make you high
  • hot water cylinder
  • j code for
  • express tabletki
  • is a psychotropic drug
  • diarrhea
  • for meningitis exposure
  • comparison
  • is or or best
  • bad dreams
  • pharmacological classification
  • dopo quanto tempo funziona
  • fracture hip
  • antibiotics for sinus infection
  • withdrawal nausea
  • back pain
  • for e coli diarrhea
  • when will patent expire
  • better than
  • exercise after
  • nausea after
  • cream webmd
  • how long to cure chlamydia
  • xanax
  • in pregnancy first trimester
  • perianal fistula
  • a nurofen
  • como se toma la pastilla para abortar
  • cheap canada free shipping
  • turmeric
  • used to treat fibromyalgia
  • can you buy chemist australia
  • versus
  • and bipolar
  • dosierung kinder
  • 10 mg enough
  • will feel better
  • and together
  • withdrawal symptoms how long
  • patient education
  • cost uk
  • m cmi
  • lethal dose
  • missed dose monthly
  • adverse side effects
  • 6315540691
  • for children
  • and alcohol interaction
  • ventures company llc
  • joint pain knees
  • pediatric dosing
  • white stool
  • and
  • versus
  • versus zoloft
  • ditropan vs
  • serophene over counter
  • pediatric dosing
  • 16 mg astrazeneca
  • medication for bipolar
  • high blood pressure medication
  • y cerveza
  • quantidade de berotec e para nebulizaAA?o
  • and azor
  • nuclear pa
  • usar 5 meses
  • transsexual
  • and alcohol interaction
  • manufacturer
  • aspirin half life
  • dementia
  • long term effects taking
  • medicine side effects
  • can take 1600 mg
  • vs
  • reviews side effects
  • 4 refundowany
  • gel drug class
  • suspension stability
  • sweating side effect
  • 9.5 mg
  • side effects weight
  • via g-tube
  • 300 g
  • success stories
  • what is 200mg capsules used for
  • effects smoking
  • conflitto tra e turchia
  • topical
  • and
  • jaundice
  • i dojenje
  • bijsluiter gsk
  • withdrawal symptoms
  • shampoo side effects men
  • hep c
  • e ipertensione
  • weight loss side effects
  • after a stroke
  • does cure stomach ulcers