Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
תכנות ב android אליהו חלסצ'י ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה עד כה נחשפנו לטכנולוגית ה J2ME מעתה נכיר טכנולוגיות נוספות לתכנות בסלולר היום נלמד על android על סדר היום: הרצאה ארכיטקטורת android מעגל החיים של אפליקציה תרגול הקמת תשתית העבודה Hello World דוגמאות מתקדמות הקדמה ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה רקע Android .incנרכשה ע"י Googleב 2005 מערכת הפעלה מבוססת לינוקס למכשירים סלולריים תכנות אפליקציות באמצעות Java ב 2007נחשף לציבור רובו קוד פתוח תחת רישיון apache ברבעון הראשון של 2010מכירות של מערכת ההפעלה androidל smart phonesבארה"ב היו במקום השני מכולן ,לאחר מעה"פ של black berry המכירות עקפו את המכירות של ( iphoneהצפי היה )2012 ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה • הארכיטקטורה מבוססת על Linux Kernel 2.6 • מהווה שכבת אבסטרקציה לחומרה • מודל התקנים מוכח כאמין ורובסטי • מספק: • memory management • process management • networking ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה • ה Native Librariesנכתבו ב C \ C++ • נדבר איתם דרך ממשקי Java מבט כללי: • ה surface managerאחראי שכל הגרפיקה מכל תהליך תוצג במקום • :openGL / SGLניתן להשתמש בהאצת חומרה ולשלב 2Dו 3D • :Media frameworkכל codec אפשרי של אודיו או וידאו • :Webkitמנוע הדפדפן ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android Dalvik Virtual Machine ה VMשל - Androidמותאם לסביבת embedded VMהן לרוב בארכיטקטורת stack machines בעוד שה DVMהיא register based השיטה השלטת במעבדים רגילים המשמעות היא: זיכרון ,כוח עיבוד ,וחיי סוללה מוגבלים יותר קוד כדי לבצע הוראה מהשפה העילית אך פחות הוראות VMכדי לבצע את התוכנית הוכח אמפירית כיותר יעיל ל interpreter ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android - Dalvik Virtual Machineהמשך באמצעות תוכנית בשם dxמתבצעת המרה לקובצי ה classלקובצי ( dexמקביל ל )Jar קובץ dexמהווה byte code עבור ה )dalvik executable( DVM כל מידע כפול מופיע רק פעם אחת גם כשהוא לא מכווץ הוא קטן יותר מקובץ Jarמכווץ ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android - Dalvik Virtual Machineהמשך ה data structureשל קובץ dexבנוי בצורה שמאפשרת שיתוף מידע בין תהליכים שונים זה מתאפשר מכיוון שהמידע לא צמוד לאובייקט אלא מנוהל במקום מרוכז המשמעות של כל מה שתיארנו עד עתה היא שניתן להריץ כמה מופעים של ה VMבו זמנית ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android - Dalvik Virtual Machineהמשך מנגנון של JITנמצא בפיתוח יש גרסא ניסיונית החל מ Android 2.0 ביצועים מעולים בגרסא 2.2החדשה Core Libraries כתובות ב Java דרכם אנו מדברים עם ה Native Libraries ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android - Dalvik Virtual Machineהמשך עדיין אין מנגנון של ( JITנמצא בפיתוח) יש גרסא ניסיונית ב Android 2.0 Core Libraries כתובות ב Java דרכם אנו מדברים עם ה Native Libraries ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ה :Application Framework • כתוב כולו ב Java • מהווה את התשתית לכתיבת האפליקציות ב Android מבט כללי: • Activity managerאחראי לניהול מעגל החיים של אפליקציות • Package managerאחראי לניהול האפליקציות המותקנות • Content providersמאפשר לכל אפליקציה לשתף מידע עם אפליקציות אחרות ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה • בשכבה העליונה נמצאות כמובן האפליקציות עצמן • Androidמגיע עם כמה אפליקציות מוכנות •בשכבה זו אנו כותבים את האפליקציות שלנו • בשפת Javaתוך כדי שימוש בתשתית הקיימת ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה אבני הבניין של אפליקציה הרכיב הכי בסיסי ,בד"כ UIשמתאים למסך אחד שלם Activity מגיב להודעות \ שינויי סטאטוס ,יכול להעיר תהליך כלשהו IntentReceiver משימה ללא UIשרצה ברקע מאפשר לאפליקציה לשתף מידע עם אפליקציות אחרות Service ContentProvider ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה כל אפליקציה רצה בתוך תהליך משלה מעגל החיים של אפליקציה Security, protective memory אפליקציה שמעמיסה על המעבד לא תחסום תהליכים קריטיים אחרים כגון לענות לטלפון מערכת Androidאחראית להפעלתם ועצירתם של תהליכים כנדרש להרצתן של אפליקציות יתכן שתהליכים יהרגו (ואח"כ ישוחזרו) על מנת לפנות משאבים לתהליכים אחרים ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה דוגמא: נניח שמאפליקציית Homeפתחנו Gmail בחרנו מכתב,הצגנו אותו וראינו בתוכו קישור לחצנו על הקישור והדפדפן נפתח בעמוד כלשהו בעמוד יש קישור למפה שלחצנו עליו האפליקציה של תצוגת המפות נפתחה כעת אנו רוצים לחזור מסכים אחורה... ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה System process Activity Manager Home Home Home תחילה קיימים 2תהליכים: • ה System Processשמריץ את ה Activity Manager שמנהל את מחסנית ה Activities • תהליך שמריץ את ה Home Activity • שמאפשרת למשתמש לבחור אפליקציות ולדפדף ביניהן Home ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה System process Activity Manager Home Home Home S Mail Mail List כעת המשתמש מפעיל את אפליקציית gmail • ה Stateשל Homeנשמר ב Activity Manager • נפתח תהליך Mailחדש • ובתוכו ה Activityשמציגה את רשימת המכתבים • שכעת נראית על כל המסך Home Mail List ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה System process Activity Manager S Home Home Home Mail Message Mail List S כעת המשתמש בחר מכתב כלשהו • ה Stateשל ה Mail Listנשמר • מתווספת Activityחדשה לתהליך של Mail • שמציגה את תוכן המכתב • שכעת נראה על כל המסך Home Message Mail List ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S System process Activity Manager S Home Home Home Mail Message S Mail List Browser Browser כעת המשתמש לחץ על קישור במכתב • ה Stateשל ה Messageנשמר • נוצר תהליך חדש למען ה Browser • בתוכו Activityשל Browser • שכעת נראה על כל המסך Home Message ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S S System process Activity Manager S Home Home Home Mail Message Mail List Browser S Browser כעת המשתמש לחץ על קישור לפתיחת מפה • ה Stateשל ה Browserנשמר • נרצה לפתוח את אפליקציית ה Maps • אך אין לנו מקום לעוד תהליך... Home ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S S S System process Activity Manager S Home Home Home Mail Message Mail List Browser Browser • לא נהרוג את תהליך ,Homeכי הוא צריך להיות תמיד זמין למשתמש לצורך דפדוף בין אפליקציות • גם את תהליך ה Browserלא נהרוג ,כי הוא האחרון • ולכן תהליך ה Mailהוא זה שייהרג כדי לפנות מקום Home ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S S S System process Activity Manager S Home Home Home Browser Browser Maps Maps • כעת יש מקום לתהליך חדש – ייפתח עבור Maps • בתוכו ה Activityשל Maps • שתיראה על כל המסך Home ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S S S System process Activity Manager S Home Home Home Browser Browser Maps Maps כעת המשתמש לוחץ backכדי לחזור לאפליקציה האחרונה • ה Activityשל Mapsתיסגר ונחזור לראות את ה Browser • התהליך היה פעיל אז לא היה צורך לטעון מחדש את ה State של ה Browser Home ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S S System process Activity Manager S Home Home Home Browser Browser Mail Maps Message כעת המשתמש שוב לוחץ backכדי לחזור אפליקציה • תהליך Mapsייהרג ,כדי לאפשר מקום לתהליך Mail • עותק חדש של Messageייפתח • הוא יתעדכן ב Stateשנשמר עבורו ב Activity Manager • כעת ה Activityשל Browserתיסגר ונראה במסך את ההודעה Home Message ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מעגל החיים של אפליקציה S System process Activity Manager S Home Home Home Browser Mail Message Mail List כעת המשתמש שוב לוחץ backכדי לחזור אחורה • תתווסף Activityחדשה של Mail List • ה Stateשלה יתעדכן מה Activity Manager • כעת ה Messageתיסגר ונראה את רשימת המכתבים במסך Home Message Mail List ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה נוריד את ה Android SDKמהכתובת http://developer.android.com/sdk/index.html נחלץ את ה zipלתיקייה כלשהי אפשרי להכניס את תת התיקייה toolsלתוך ה Path ניצור workspaceחדש ל eclipseבשביל android דרך התפריט helpנוסיף את ה plug-inמהכתובת https://dl-ssl.google.com/android/eclipse ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה בינתיים נתקין את ה SDKע"י הפעלת SDK Setup.exe אם תהיה לו בעיה לגשת ל repositoryשל googleנכנס ל settingsונסמן את Force https://...נסגור ונתקין שוב נאשר הכל ונמתין עד סיום ההתקנה תהליך זה קצת ארוך ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה בינתיים נתקין את ה SDKע"י הפעלת SDK Setup.exe אם תהיה לו בעיה לגשת ל repositoryשל googleנכנס ל settingsונסמן את Force https://...נסגור ונתקין שוב נאשר הכל ונמתין עד סיום ההתקנה תהליך זה קצת ארוך ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה לאחר סיום התקנת ה plug-inה eclipseיופעל מחדש ,כעת נמתין שתסתיים גם התקנת ה SDK נכנס לתפריט …windows preferences תחת Androidנבחר את התיקייה בה חילצנו קודם את ה zipשהורדנו (ה SDKשל )Android ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה כדי שנוכל לעבוד עם אמולטור עלינו ליצור Android ) = Virtual Device (AVDמכשיר נייד מתוך סרגל הכלים של eclipseנלחץ על הכפתור של android ייפתח לנו חלון ה AVD manager נבחר Virtual Devices נלחץ על …new בחלון שייפתח נגדיר מכשיר נייד כרצוננו ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה הקמת תשתית עבודה נוודא שהוא עובד ע"י סימונו ולחיצה על Start ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world ניצור פרויקט חדש ע"י …file new project נבחר Android project נמלא לאחר מכן את הפרטים הבאים: שם הפרויקט HelloAndroid Build target = android 1.1 שם האפליקציה Hello, Android נבחר שם ל packageכרצוננו נבחר ליצור activityבשם HelloAndroid Min SDK version = 2 android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world :נוצרה לנו התוכנית הבאה package biu89697.example; היא הישותActivity המחלקה .הבסיסית להרצת פעולות באפליקציה import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { אפליקציה יכולה להיות מורכבת מכמה אך המשתמש יכול לבצעActivities .אינטראקציה רק עם אחת בכל פעם /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } Android תופעל ע"יActivity כשה . תיקראonCreate(( המתודה היא תשמש אותנו לאתחול כללי .UI ובד"כ גם לאתחול ה android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world package biu89697.example; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { : פשוטUI כעת נוסיף לנו כשנריץ נתבקש לבחור מכשיר my_avd נבחר ב :התוצאה /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } } ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה כתיבת UIבאופן ישיר דרך הקוד Hello world תוביל לכך ששינוי קטן ב layoutיגרום לכאב ראש גדול קל לשכוח לחבר viewsיחד ,ויגרמו טעויות ל layout זמן ...debug לכן ניתן ליצור UIגם באמצעות קובצי XML נתבונן בקבצים הנוספים שה plug-inיצר – main.xmlמגדיר את ה UI – strings.xmlכל המחרוזות הקבועות – R.javaקיצור ל Resource android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world main.xml (layout) מגדיר לנו את אופן פריסת הרכיבים הגרפים וכן את הרכיבים עצמם ניתן לערוך אותו ידנית או באמצעות עורך ויזואלי <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" </LinearLayout> /> ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה main.xml עורך ויזואלי Hello world android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world strings.xml UI כאן נגדיר את כל המחרוזות הקבועות שלנו ב <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloAndroid!</string> <string name="app_name">Hello, Android</string> </resources> ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Hello world כדי שהתוכנית שלנו תשתמש בהגדרות הללו ,נחזיר ;)setContentView(R.layout.main את השורה במקום - tvה textViewשיצרנו דרך הקוד מתבצעת קריאה סטטית למחלקה R שתפעיל את ה layoutשמוגדר ב main.xml תפקיד המחלקה – גישה מהירה ל resources נוצרת אוטומטית עם כל resourceשאנו מכניסים אין לערוך את המחלקה הזו ידנית (!) Hello world public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } } android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה R.java גישה סטטית לכל משאב לצורך נוחות ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה אפליקציה שמראה לנו דוגמאות מתקדמות תוך כדי תנועה על מפה כמה קרובים אנו לכתובות החברים שלנו נראה דוגמאות ל הוספה פריט לתפריט שימוש במידע GPS שימוש במידע משותף Intent / Intent Receiver קריאה ל map ביצוע התקשרות מקורhttp://blogoscoped.com/archive/2007-11-19-n27.html : הוספת תפריט android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה /* Creates the menu items */ public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_NEW_GAME, 0, "New Game"); menu.add(0, MENU_QUIT, 0, "Quit"); return true; } /* Handles item selections */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_NEW_GAME: newGame(); return true; case MENU_QUIT: quit(); return true; } return false; } onCreateOptionsMenu נקראת כאשר מוצר תפריט עלינו לדרוס אותה מוסיפה פריטmanu.add כשתיבחר אופציה onOptionsItemSelected תופעל נזהה את האופציה לפי int item.getItemId() :לפרטים נוספים http://developer.android.com/guide/topics/ui/menus.html GPS - Location Based Service android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מספקיםandroid שלlocation based services ה כגוןlocation providers לאפליקציות הקשר גיאוגרפי דרך GPS ‘ לצורכי פיתוחgps’ בשםprovider מגיע עםandroid XML ניתן ליצור עוד ע"י,פרנסיסקו-הוא ממפה את סאן LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = locationManager.getCurrentLocation("gps"); שימוש במידע משותף Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null); startManagingCursor(c); int coordIdx = c.getColumnIndex(People.NOTES); int phoneIdx = c.getColumnIndex(People.PhonesColumns.NUMBER); int nameIdx = c.getColumnIndex(People.NAME); List listItems = new ArrayList(); c.first(); do { String name = c.getString(nameIdx); String coords = c.getString(coordIdx); String phone = c.getString(phoneIdx); //... [ Process the lat/long from the coordinates ] ... //... [ Storing their location under variable loc ] ... String distStr = String.valueOf(location.distanceTo(loc)/1000); name = name + " (" + distStr + "km)"; listItems.add(name); numbers.add("tel:" + phone); } while(c.next()); android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה יכולContentResolver לשלוח שאילתא למידע משותף של Content Providers cursor נקבל חזרה המצביע על תחילת התשובה שחזרה People נשתמש ב לרשימת החברים Intent / Intent Receiver android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה Event / Event handler המקבילים ל חדש בכלIntent ניזום ...פעם שהמכשיר יזוז List providers = locationManager.getProviders(); LocationProvider provider = providers.get(0); Intent intent = new Intent(LOCATION_CHANGED); locationManager.requestUpdates(provider, minTime, minDistance, intent); public class myIntentReceiver extends IntentReceiver { @Override public void onReceiveIntent(Context context, Intent intent){ updateList(); ניצור מחלקה פנימית Intent שתתפוס את ה נקשר את השניים ב או תחתonCreate() start / stop תפריט כגון } } filter = new IntentFilter(LOCATION_CHANGED); receiver = new myIntentReceiver(); registerReceiver(receiver, filter); android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה map קריאה ל MapView כדי להשתמש בMapActivity נצטרך להרחיב את public class MyMapViewActivity extends MapActivity{ MapController יש מופע שלMapView למופע של באמצעותו ניתן לשלוט על המפה Point point = new Point(lat.intValue(), lng.intValue()); mapController.centerMapTo(point, false); למשל למרכז אותה מסביב לנק' שלנו @Override public void draw(Canvas canvas, PixelCalculator calculator, boolean shadow) { //... [ draw things here ] ... } } של המפהcanvas נצייר על הoverlayController באמצעות protected class MyLocationOverlay extends Overlay { ביצוע התקשרות android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה נרצה אולי להתקשר לחבר על המפה מסוגintent של ההתקשרות מאזינה לactivity ה DIAL_ACTION :ניזום אותה כך Intent i = new Intent(); i.setAction(DIAL_ACTION); i.setData(new ContentURI(numbers.get(position))); startActivity(i); ארכיטקטורת android מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה מנה 3הבדלים בין JVMסטנדארטי ל DVM כיצד מתמודד androidעם מעבד חלש שיכול להריץ רק מספר קטן של תהליכים במקביל? (קטן יחסית ל )PC מהם ? Intents / Intent Receivers למה עדיף שה layoutשל ה UIיוגדר מחוץ לקוד ע"י ?XML תבקרו בבלוג של android – developerללמוד עוד הטמעה http://android-developers.blogspot.com/index.html תוכלו לראות גם אפשרויות שלא קימות ב J2ME כגון הוספת widgetsישירות למסך הראשי http://android-developers.blogspot.com/2009/04/introducinghome-screen-widgets-and.html android ארכיטקטורת מעגל החיים של אפליקציה הקמת תשתית עבודה Hello World דוגמאות מתקדמות הטמעה :מקורות http://developer.android.com/index.html • http://blogoscoped.com/archive/2007-11-19-n27.html • http://www.youtube.com/watch?v=Mm6Ju0xhUW8 • http://www.youtube.com/watch?v=ITfRuRkf2TM• http://www.youtube.com/watch?v=iiD4fGjjXcc •