2012年8月28日 星期二

Android Google Map (101)


1、Install the Google APIs add-on in Eclipse

2、Android Project     

  • target Google API 

  • Manifest (AndroidManifest.xml)

    • com.google.android.maps  (a child of <application> element)
      • <uses-library android:name="com.google.android.maps"/>
    • android.permission.INTERNET (a child of <manifest> element)
      • <uses-permission android:name="android.permission.INTERNET"/>
    • @android:style/Theme.NoTitleBar
      • <activity android:name=".HelloGoogleMaps" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">

  • res/layout/mapview.xml
    • <?xml version="1.0" encoding="utf-8"?>
    • <com.google.android.maps.MapView
    •     xmlns:android="http://schemas.android.com/apk/res/android"
    •     android:id="@+id/mapview"
    •     android:layout_width="fill_parent"
    •     android:layout_height="fill_parent"
    •     android:clickable="true"
    •     android:apiKey="Your Maps API Key goes here"
    • />
  • extends MapActivity
    • create a object of MapView
      • setBuiltInZoomControls(true)
    • override isRouteDisplayed()

3、Obtaining a Maps API Key

  • debug
    • ~/.android/debug.keystore
    • keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android
  • release
    • keytool -list -alias alias_name -keystore my-release-key.keystore
  • https://developers.google.com/android/maps-api-signup
    • Use Certificate fingerprint (MD5) to get Map API



2012年3月18日 星期日

Working with XML on Android

Reference : http://www.ibm.com/developerworks/opensource/library/x-android/

在IBM這篇XML的文章中,提供了很好的XML解譯方式

加上小小的修改,成為想要的流程



這樣就可以只要增修 Handler (extends from XmlHandler) 就可處理其他 Xml format
(Entity 好像也應該要變成 Interface or Abstract Object ??)


public interface FeedParser {
 List parse();
}

public abstract class BaseFeedParser implements FeedParser {

 private final URL feedUrl;

 protected BaseFeedParser(String feedUrl){
  try {
   this.feedUrl = new URL(feedUrl);
  } catch (MalformedURLException e) {
   throw new RuntimeException(e);
  }
 }

 protected InputStream getInputStream() {
  try {
      return feedUrl.openConnection().getInputStream();
  } catch (IOException e) {
      throw new RuntimeException(e);
  }
 }
}

public class SaxFeedParser extends BaseFeedParser {

 private XmlHandler handler;
 
 public SaxFeedParser(String feedUrl){
  super(feedUrl);
 }
 
 public List parse() {
     SAXParserFactory factory = SAXParserFactory.newInstance();
     try {
  SAXParser parser = factory.newSAXParser();
  parser.parse(this.getInputStream(), handler);
   
  return handler.getMessages();
  
     } catch (Exception e) {
  throw new RuntimeException(e);
     } 
 }

 public void setHandler(XmlHandler handler) {
  this.handler = handler;
 }
}

public abstract class XmlHandler extends DefaultHandler {

 public abstract List getMessages();
}