echo-o & android app dev - barcamp saigon 1

24
by Tuan Tuong Dang @ Multinc with guidance from Huy Zing BarCamp Saigon 1 November 15, 2008

Upload: huyzing

Post on 09-May-2015

2.078 views

Category:

Technology


0 download

DESCRIPTION

For BarCamp Saigon 1, Multinc describes their experiences developing an Android app for http://echo-o.comAlso see the accompanying presentation "iPhone & Android App Dev - BarCamp Saigon 1"

TRANSCRIPT

Page 1: echo-o & Android App Dev - BarCamp Saigon 1

by Tuan Tuong Dang @ Multincwith guidance from Huy Zing

BarCamp Saigon 1November 15, 2008

Page 2: echo-o & Android App Dev - BarCamp Saigon 1

echo-o

“simple real-time feedback”

From:

To:

Page 3: echo-o & Android App Dev - BarCamp Saigon 1

echo-o architecture

Web Application

Multiple clients:Web browserAdobe AIRiPhone mobileAndroid mobile

Page 4: echo-o & Android App Dev - BarCamp Saigon 1

Android Mobile

Page 5: echo-o & Android App Dev - BarCamp Saigon 1

This presentation

Structure of an Android application

Building blocks of an Android application

User Interface of the echo-o application

Page 6: echo-o & Android App Dev - BarCamp Saigon 1
Page 7: echo-o & Android App Dev - BarCamp Saigon 1
Page 8: echo-o & Android App Dev - BarCamp Saigon 1

HelloWorld.java

public class HelloWorld extends Activity { public void onCreate(Bundle

instanceState) { super.onCreate(instanceState); TextView tv = new TextView(this); tv.setText("Hello World!!!"); this.setContentView(tv); }}

Page 9: echo-o & Android App Dev - BarCamp Saigon 1
Page 10: echo-o & Android App Dev - BarCamp Saigon 1
Page 11: echo-o & Android App Dev - BarCamp Saigon 1

4 Android Building Blocks

Activity

Service

BroadcastReceiver

ContentProvider

Page 12: echo-o & Android App Dev - BarCamp Saigon 1

Building Blocks for echo-o

Activity – to show screens and respond to user

Service – to create a re-usable sound object

BroadcastReceiver

ContentProvider

Page 13: echo-o & Android App Dev - BarCamp Saigon 1

Other APIs

Intent

Views

Notifications

Page 14: echo-o & Android App Dev - BarCamp Saigon 1

Other APIs for echo-o

Intent – messages such as invoking a sound

Views – display web pages

Notifications – send vibrate notifications

Page 15: echo-o & Android App Dev - BarCamp Saigon 1
Page 16: echo-o & Android App Dev - BarCamp Saigon 1

UI ScreensEach screen has views

ViewGroup

ViewGroup View

View ViewView

role_name [1:1] role_name [1:1]

role_name [1:1]

role_name [1:1]

role_name [1:1]

Page 17: echo-o & Android App Dev - BarCamp Saigon 1

View LayoutsFrameLayout

LinearLayout

RelativeLayout

TableLayout

AbsoluteLayout

Page 18: echo-o & Android App Dev - BarCamp Saigon 1

View ComponentsButton

TextView

WebView – displays our web application

EditText

ListView

CheckBox

Radio

Page 19: echo-o & Android App Dev - BarCamp Saigon 1

WebViewProblem: JavaScript is disabled by default.

Solution: browser.getSettings().setJavaScriptEnabled(true);

Page 20: echo-o & Android App Dev - BarCamp Saigon 1

WebViewProblem: Communication between Android app and web

app:

Solutions:

Set up handler for JavaScript alerts/prompt/confirms:browser.setWebChromeClient(new WebChromeConfirm());private class WebChromeConfirm extends WebChromeClient {…}

Web app invokes method on native app: MainActivity.java

AndroidManipulation am = new AndroidManipulation(this);browser.addJavascriptInterface(am, “am");

WebApp.js:am. doVibrate();

Page 21: echo-o & Android App Dev - BarCamp Saigon 1

WebViewProblem: Zoom picker is disabled by default

Solution:LinearLayout zoomLayout =

(LinearLayout)findViewById(R.id.basic_map_zoom); settingWebView();View zc = browser.getZoomControls();zoomLayout.addView(zc, new

ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT , ViewGroup.LayoutParams.WRAP_CONTENT ));

Page 22: echo-o & Android App Dev - BarCamp Saigon 1

WebViewProblem: clicking links are sent to system web browser.

Solution: clicking links stay in the WebView

browser.setWebViewClient(new Callback());private class Callback extends WebViewClient{

public boolean shouldOverrideUrlLoading(WebView view, String url) {loadUrl(url);return(true);

}}

Page 23: echo-o & Android App Dev - BarCamp Saigon 1

WebViewProblem: changing orientation resets emulator

Solution:a) test on real mobile device

b) on emulator:

protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putString("address", txt.getText().toString());

}....String address = savedInstanceState != null ?

savedInstanceState.getString("address") : "http://www.google.com.vn";loadUrl(address);

Page 24: echo-o & Android App Dev - BarCamp Saigon 1

http://multinc.com/http://code.google.com/android/