Wednesday, April 20, 2011

AR example

Data source:

package com.jwetherell.augmented_reality.data;

import java.util.List;

import com.jwetherell.augmented_reality.ui.Marker;

public abstract class DataSource{

public abstract String createRequestURL( double lat,
double lon,
double alt,
float radius,
String locale);

public abstract List parse(String url);


}

BUZZ DATA source:


package com.jwetherell.augmented_reality.data;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;

import com.jwetherell.augmented_reality.R;
import com.jwetherell.augmented_reality.parser.FeedParser;
import com.jwetherell.augmented_reality.parser.FeedParserFactory;
import com.jwetherell.augmented_reality.parser.Loc_Finder;
import com.jwetherell.augmented_reality.parser.ParserType;
import com.jwetherell.augmented_reality.parser.message;
import com.jwetherell.augmented_reality.ui.IconMarker;
import com.jwetherell.augmented_reality.ui.Marker;

public class BuzzDataSource extends DataSource {
private Logger logger = Logger.getLogger(getClass().getSimpleName());

public static int size;
private static final String BASE_URL = "http://174.129.227.226/service.htm?f=findRestaurantInAreaTakeAway";

public static List id1;

private static Bitmap icon = null;
List messages=new ArrayList();

public BuzzDataSource(Resources res) {
createIcon(res);
}

protected void createIcon(Resources res) {
icon=BitmapFactory.decodeResource(res, R.drawable.icon);
}

public Bitmap getBitmap() {
return icon;
}

public String createRequestURL(double lat, double lon, double alt, float radius, String locale) {

return BASE_URL+"&refLat="+Loc_Finder.lati+"&refLong="+Loc_Finder.longi+"&radiusInKm=10";

}

public void parseDidFinish(List messages) {
// TODO Auto-generated method stub
try{

this.messages=messages;

}
catch(Exception e){
System.out.println("Error in getting data...."+e);

}
}

public Marker updateUIwithData(String name,Double lat,Double lon){
Marker ma = null;
try {
ma = new IconMarker(
name,
lat,
lon,
0,
Color.GREEN,
icon);

} catch (Exception e) {
logger.info("Exception: "+e.getMessage());
}
return ma;
}

@Override
public List parse(String url) {

List markers=new ArrayList();

try{
FeedParserFactory f=new FeedParserFactory(url);
FeedParser parser = f.getParser(ParserType.XML_PULL);
messages=parser.parse();

List name1=new ArrayList();
List long1=new ArrayList();
List lati1=new ArrayList();
List dis1=new ArrayList();
id1=new ArrayList();
// TODO Auto-generated method stub

size=messages.size();

for (message msg : messages)
{
name1.add(msg.getname());
long1.add(msg.getlongtude());
lati1.add(msg.getlatitude());
dis1.add(msg.getdistance());
id1.add(msg.getid());
}

for(int i=0;i Marker ma=null;
ma=updateUIwithData(name1.get(i),Double.parseDouble(lati1.get(i)),Double.parseDouble(long1.get(i)));

if(ma!=null)
markers.add(ma);
}

}catch(Exception e){
System.out.println("Error in Main Load feed method");
}
return markers;

}


}
Pasrser callback:

package com.jwetherell.augmented_reality.parser;

import java.util.List;


public interface ParserCallback {

public message parseDidFinish1(List messages);
public void parseDidFinish(List messages);

}

Xml parser:


package com.jwetherell.augmented_reality.parser;

import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Log;
import android.util.Xml;

public class XmlPullFeedParser extends BaseFeedParser {

public XmlPullFeedParser(String feedUrl) {
super(feedUrl);
}


public List parse() {

List messages = null;
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(getInputStream(), null);
System.out.println("Parser Data--------------\n------"+parser.getText());
int eventType = parser.getEventType();
message currentMessage = null;
boolean done = false;
while (eventType != XmlPullParser.END_DOCUMENT && !done){
String name = null;
switch (eventType){
case XmlPullParser.START_DOCUMENT:
messages = new ArrayList();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if (name.equalsIgnoreCase("restaurant")){
currentMessage = new message();
} else if (currentMessage != null){
if(name.equalsIgnoreCase("id")){
currentMessage.setid(parser.nextText());
}else if(name.equalsIgnoreCase("name")){
currentMessage.setname(parser.nextText());
}else if(name.equalsIgnoreCase("latitude")){
currentMessage.setlatitude(parser.nextText());
}else if(name.equalsIgnoreCase("longitude")){
currentMessage.setlongtude(parser.nextText());
}else if(name.equalsIgnoreCase("distance")){
currentMessage.setdistance(parser.nextText());
}else if(name.equalsIgnoreCase("cuisine")){
currentMessage.setcuisine(parser.nextText());
}
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
if (name.equalsIgnoreCase("restaurant")&& currentMessage != null){
messages.add(currentMessage);
}
else if(name.equalsIgnoreCase("dataset")){
done = true;
}
break;
}
eventType = parser.next();
}
} catch (Exception e) {
Log.e("Error Mian PullFeedParser", e.getMessage(), e);
//throw new RuntimeException(e);

}
return messages;

}


@Override
public void parse(ParserCallback messages) {
// TODO Auto-generated method stub

}

}

try this

No comments:

Post a Comment