Wednesday 29 August 2012

How To Test Broadcast Receiver In Emulator

To Send Broadcast from CMD you can use this Command.
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n package_name/class_name

You can test your application having any kind of broadcast receiver, the emulator will get the broadcast according the Action passed with the above command.



Thursday 15 September 2011

Andorid Simple XML Parsing Example - EasyToGo with Parsing

MainActivity.java
============
package com.android.parser;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    private ArrayList<MapItem> itemList=null;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        itemList=new ArrayList<MapItem>();
        getData();
    }
    private void getData()
    {
        try
        {
            URL url=new URL("http://idrink4free.com/idrink4free/www/beer/map_trick.php");
            SAXParserFactory factory=SAXParserFactory.newInstance();
            SAXParser saxparser=factory.newSAXParser();
            XMLReader xmlReader=saxparser.getXMLReader();
            Parser parser=new Parser(itemList);
            xmlReader.setContentHandler(parser);
            InputSource is = new InputSource(url.openStream());
            xmlReader.parse(is);
            for(MapItem i:itemList)
            {
                Log.i("Description","."+i.description);
            }
        }
        catch (Exception e) {
            // TODO: handle exception
        }
       
    }
}

MapItem.java
=========
package com.android.parser;

public class MapItem
{
    String id,name,description,latitude,longitude,comment;

}




Parser.java
========
package com.android.parser;

import java.util.ArrayList;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class Parser extends DefaultHandler {
    private final static String TAG_ITEM = "tricklocation";
    private final static String[] xmltags = { "id", "name", "description",
            "latitude", "longitude", "comment" };
    private MapItem mapItenm = null;
    private ArrayList<MapItem> itemList = null;
    private int curentIndex = -1;
    private boolean isParsing = false;
    private StringBuilder builder = new StringBuilder();

    public Parser(ArrayList<MapItem> itemList) {
        super();
        this.itemList = itemList;
    }

   

    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        super.startElement(uri, localName, qName, attributes);
        if (localName.equalsIgnoreCase(TAG_ITEM)) {
            mapItenm = new MapItem();
            curentIndex = -1;
            isParsing = true;
            itemList.add(mapItenm);
           
        } else {
            curentIndex = itemIndexFromString(localName);

            builder = null;

            if (-1 != curentIndex)
                builder = new StringBuilder();

        }

    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        super.endElement(uri, localName, qName);
        if (localName.equalsIgnoreCase(TAG_ITEM)) {
            isParsing = false;

        } else if (curentIndex != -1) {
            if(isParsing)
            {
                switch(curentIndex)
                {
                    case 0:    mapItenm.id = builder.toString();         break;
                    case 1:    mapItenm.name = builder.toString();            break;
                    case 2:    mapItenm.description = builder.toString();
                            break;
                    case 3:    mapItenm.latitude= builder.toString();    break;
                    case 4:    mapItenm.longitude= builder.toString();    break;
                    case 5:    mapItenm.comment= builder.toString();    break;
                }
            }

        }

    }

    public void characters(char[] chars, int start, int length)
            throws SAXException {
        super.characters(chars, start, length);
        if (isParsing && -1 != curentIndex && null != builder) {
            builder.append(chars, start, length);
        }
    }

    private int itemIndexFromString(String tagname) {
        int itemindex = -1;

        for (int index = 0; index < xmltags.length; ++index) {
            if (tagname.equalsIgnoreCase(xmltags[index])) {
                itemindex = index;

                break;
            }
        }

        return itemindex;
    }

}