echo-o & android app dev - barcamp saigon 1
Post on 09-May-2015
2.078 Views
Preview:
DESCRIPTION
TRANSCRIPT
by Tuan Tuong Dang @ Multincwith guidance from Huy Zing
BarCamp Saigon 1November 15, 2008
echo-o
“simple real-time feedback”
From:
To:
echo-o architecture
Web Application
Multiple clients:Web browserAdobe AIRiPhone mobileAndroid mobile
Android Mobile
This presentation
Structure of an Android application
Building blocks of an Android application
User Interface of the echo-o application
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); }}
4 Android Building Blocks
Activity
Service
BroadcastReceiver
ContentProvider
Building Blocks for echo-o
Activity – to show screens and respond to user
Service – to create a re-usable sound object
BroadcastReceiver
ContentProvider
Other APIs
Intent
Views
Notifications
Other APIs for echo-o
Intent – messages such as invoking a sound
Views – display web pages
Notifications – send vibrate notifications
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]
View LayoutsFrameLayout
LinearLayout
RelativeLayout
TableLayout
AbsoluteLayout
View ComponentsButton
TextView
WebView – displays our web application
EditText
ListView
CheckBox
Radio
WebViewProblem: JavaScript is disabled by default.
Solution: browser.getSettings().setJavaScriptEnabled(true);
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();
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 ));
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);
}}
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);
http://multinc.com/http://code.google.com/android/
top related