קורס פיתוח אפליקציות לאנדרואיד – סילבוס

 

מטרת קורס פיתוח אפליקיות לאנדרואיד היא להכשיר אנשי תוכנה שיוכלו להשתלב בתעשיה הפיתוח לאנדרואיד הן כעצמאיים והן בחברות המובילות במשק. הקורס בנוי במתכונת מרוכזת של מקסימום חומר במינימום זמן – ניצול מקסימלי של כל שעת לימוד, דבר שהופך את התרגול בבית לחיוני.

במהלך הקורס נפתח יחדיו יותר מ70 אפליקציות שונות! כל אחת יעודית למטרה אחרת ומדגימה יכולת אחרת של מערכת ההפעלה.

שפת התכנות לאנדרואיד היא Java ולכן הקורס כולל שתי מכינות: המכינה הראשונה מטרתה להקנות את יסודות התכנות וכתיבת הקוד על הלוגיקה והאלגוריתמיקה המרכיבים את התכנית הבסיסית ביותר בJava, והמכינה המתקדמת – Java OOP בנויה על הקנית יסודות התכנות מונחה העצמים על יצירת מחלקות חדשות, ממשקים, תהליכים מקביליים ב Java ועוד. מכינה זו מוכוונת אנדרואיד ומטרתה לייצר הפרדה ברורה בין Android API ל Java למען הקלת לימודי האנדרואיד בהמשך (בעלי רקע בתכנות יכולים לקבל פטור מאחת המכינות או משתיהן).

לאחר שתי המכינות יתחיל השלב העיקרי של הקורס והוא הכרת ה Android API (פירוט בטבלה):

 

מודול נושא

Introduction
הקדמה

  • Android – הסבר כללי על מערכת ההפעלה מבית גוגל, על הגרסאות והפלטפורמות.
  • Android Studio – היכרות עם סביבת העבודה הנפוצה ביותר לפיתוח אפליקציות ל Android.
  • Project files & structure – מבנה האפליקציה על המרכיבים השונים: קבצי XML לעיצוב סטטי של המסך, קבצי ה Java לכתיבת הקוד הדינמי לטיפול באירועים, תיקיית המשאבים ולוקליזציה לפי שפה ולפי גדלי מסכים שונים, קובץ ה Manifest המרכז את הגדרות ורכיבי האפליקציה וקבצי ה Gradle המחברים את חלקי הפרוייקט יחדיו.
  • Synching device – הרצת האפליקציות על המכשיר דורשת הכנה קצרה למען סביבת הפיתוח תוכל להתחבר אליו, ולהריץ אפליקציות בצורה מקומית ולא דרך אמולטורים.

User Interface
עיצוב ממשק המשתמש

לחץ לדוגמא

  • הגדרת רכיבי המסך בקובץ ה XML ובאופן דינמי בקובץ ה Java.
  • קבלת האירועים מן הרכיבים הוויזאלים ב Java על ידי מנגנון ה Listeners וישומו בשיטות שונות.
  • ארגון האלמנטים הוויזאולים בתוך ההורה שלהם לפי המאפיינים הספציפים של כל Layout.
  • שינוי הקונפיגורציות של כל רכיב באופן דינמי  – תוך כדי ריצת התכנית.
  • בין המחלקות הנלמדות במודול זה: View, ViewGroup, TextView, EditText, ImageView, Button, ImageButton, Switch, ToggleButton, RadioButton LinearLayout, RelativeLayout, TableLayout, FrameLayout.
  • Toast notifications – שימוש במחלקת ה Toast למען הקפצת הודעות חיווי קצרות למשתמש.

Activities & Intents
הוספת רכיבים נוספים לאפליקציה ופתיחת יישומי המערכת המובנים

לחץ לדוגמא

  • הוספת רכיב נוסף המהווה מסך מלא (Activity) ומעבר בינהם על ידי Explicit Intent כולל הטמנת מידע ב Bundle המועבר בו.
  • פתיחת יישומים מובנים של מערכת ההפעלה על ידי הגדרת הפעולה הרצוייה ויצירת Implicit Intent, בינהם החייגן, אנשי הקשר, המפות, דפדפן, יישום המייל ואף יישומים חיצונים כגון ©Waze ו ©WhatsApp
  • מנגנון ההרשאות הישנות (לפני אנדרואיד Marshmallow) והחדשות הניתנות בזמן ריצה  (Runtime Permissions)  ולא בזמן ההתקנה
  • הגדרת רכיב העונה לפעולה או לצורך באמצעות Intent Filter כגון היכולת שלנו להוות אפליקציה לשליחת דואר אלקטרוני.
  • פתיחת רכיב לצורך קבלת תשובה באמצעות startActivityForResult בין היתר נבצע שימוש במצלמה והצגת התמונה, פתיחת Google Voice recognition  ושימוש ב Text to speech. יוצג גם פתיחת רכיב אישי כדוגמת מבחן אמריקאי החוזר אלינו עם הציון של התלמיד.

Persistent Storage
שמירת נתונים במערכת הקבצים

  • מחזור החיים של ה Activity והצורך לשמור מידע במערכת הקבצים.
  • שמירת נתונים בסיסיים ב Shared preferences ואיחזורם.
  • שמירה ב Internal Storage של האפליקציה וקריאה ממנו. שמירת מידע מסוגים שונים: טקסט, תמונות וכל אובייקט המיישם את הממשק Serializable. כולל ביצוע החרגה על ידי transient וטיפול אישי על ידי readObject ו writeObject.
  • שמירת נתונים שיתופיים וארוכי טווח ב External Storage.

Menus & Dialogs
תפריטים ודיאלוגים

  • Activity’s Action menu – יצירת תפריט יחודי לכל מסך וקבלת האירועים ממנו.
  • Widget Context Menu – הוספת תפריטים קופצים לרכיבים וויזאלים העולים בלחיצה ארוכה.
  • PopupMenu – תפריט קופץ הניתן להצמדה לכל רכיב ומציג אפשרויות נוספות לפעולה.
  • Contextual Action Mode – יצירת Context Menu אשר יופיע בסרגל המשימות של המסך.
  • Alert Dialog – חלון קופץ אשר דורש את תשומת ליבו המיידית של המשתמש (כגון ההתראה על סוללה נמוכה) ברמה בסיסית ומתקדמת על ידי הוספת Custom view.
  • Multi\Single choices dialogs – הוספת אפשרות לבחור אפשרויות מתוך רשימה.
  • Date\Time pickers Dialogs – פתיחת חלון סטנדרטי של המערכת לבחירת תאריך ושעה.
  • Progress Dialog – דימוי תהליך רקע ארוך טווח ועדכון ההתקדמות בחלון מתאים.

Adapter, AdapterViews & RecyclerView
רשימות נגללות וספקי המידע עבורן

לחץ לדוגמא

  • ListView, GridView, Gallery – בקרים וויזואלים מתקדמים המאפשרים גלילה מהירה על המידע באמצעות מנגנון מיחזור תאים.
  • ArrayAdapter, SimpleAdapter, CustomAdapter – הבקרים הוויזואלים המצוינים לעיל שואבים את המידע מה Adapter אשר מחזיק בתוכו את המודלים  (מבני הנתונים) ומספק להם את המידע על פי הדרישה.
  • RecyclerView – בקר וויזואלי מתקדם אשר מיועד להוות תחליף ל AdapterViews בכלל ול ListView בפרט, המנהל את מנגנון המיחזור באופן אוטמטי והנעזר ב ViewHolder לצורך שיפור יעילות וביצועים ומאפשר גמישות מירבית.
  • CardView – רכיב UI המאפשר הצגת מידע בתוך Layout המתאים לתבניות העיצוב החדשות.

פרוייקט אמצע

  • Contact App – יצירת אפליקציית אנשי קשר. שמירה של אובייטקים מורכבים, הצגתם ברשימה, וממשק משתמש דינמי.

Asynchronous programming
ביצוע מקבילי 

לחץ לדוגמא

  • Java multithreading – שימוש במנגנון הירושה מ Thread על מנת ליצור תהליך רקע נוסף לתהליך הראשי.
  • Handler – שליחת הודעות וקטעי קוד להרצה ב Main thread למען עדכוני UI מתוך background threads
  • AsyncTask – מחלקה יעודית של Android אשר מאפשרת יצירת משימות רקע המעדכנות את ה UI ב Main thread באופן רציף.

Alarm Manager
תזמון משימות

  • Java Timer class – מחלקה של Java אשר בשילוב עם Hanler יכולה לתזמן משימות לביצוע חוזר או מאוחר יותר בתוך  האפלקיציה
  • Android Alarm Manager – שליחת משימות למערכת ההפעלה לביצוע מאוחר יותר או חוזר גם כאשר המתשתמש לא נמצא בתוך האפליקציה.

Notifications
מערכת ההתראות

  • Notifications & Notifications manager – שליחת התראות למערכת ההפעלה להצגה על מסך הבית של הטלפון.
  • RemoteViews – קביעת תצוגה מותאמת אישית הנשלחת להצגה ע״ע מערכת ההפעלה.
  • Pending Intent – מתן הרשאות ליישומים חיצוניים לביצוע Intent פנימי.
  • Progress notifications – הצגת Progress bar בנוטיפיקציה ועדכונה באופן רציף.

Services
מבצעי שרות

לחץ לדוגמא

  • Service – רכיב נוסף המאפשר הרצת משימה ארוכת טווח ללא User interface.
  • IntentService – מחלקה הירושת מ Service ומריצה את המשימות אחת אחרי השניה ברקע.
  • Foreground Service – מעבר של Service ל Foreground באמצעות נוטיפיקציה המעידה על קיומו נותנת לו טווח חיים ארוך אף יותר ואינו מועמד לסיום על ידי המערכת במצב זכרון נמוך.
  • MediaPlayer – מחלקה לניגון מדיה, באמצעותה ובשילוב עם ה Service נייצר נגן מוזיקה.

Broadcast Receiver
מעבירי ההודעות

  • BroadcastReceiver – רכיב נוסף המאפשר קבלת שדררים העוברים במערכת, כגון שיחה נכנסת, הודעת טקסט, סוללה נמוכה ועוד.
  • System and Custom broadcast – הרשמה באמצעות IntentFilter לשדרי מערכת שונים או לשדר שהגדרנו בעצמנו. הרשמה בקובץ ה Manifest או באופן דינמי בקוד ה Java על יד רכיב אחר. בין השדרים המודגמים: Received sms, boot completed, screen on/off
  • SmsManager – מחלקה לטיפול וקריאה של הודעות טקסט.
  • LocalBroadcastManager – שליחת שדרים פנימיים ומאובטחים בתוך האפליקציה שלנו.

Fragments
חלקות המסך לתתי יחידות

  • Fragments & Fragment manager – פיצול המסך הגדול לתתי חלקים ומתן עצמאות לכל חלק.
  • Activity & Fragment communication – יצירת פרוטוקול תקשורת מוסכם.
  • ListFragment, DialogFragment – תתי מחלקות של Fragment להצגת רשימה ודיאלוג.
  • PreferenceFragment – יצירת תפריט הגדרות לאפליקציה באמצעות רכיבים וויזואלים יעודיים.
  • ViewPager – רכיב וויזאולי מתקדם המאפשר החלפת Fragments על ידי החלקה אופקית.

Sensors
חיישנים

לחץ לדוגמא

  • Location & LocationManager – שימוש בשרותי המיקום של המכשיר באמצעות שימוש ב GPS, Network  או מיקום פאסיבי. אובייקט Criteria אשר מאפשר להגדיר קריטריונים ולקבל את הספק המתאים ביותר.
  • Fused Location API – שימוש בשרותי המיקום החדשים של Google play כדי לקבל עדכוני מיקום אמינים בהם המערכת בוחרת את הספק המיטבי לפי הצרכים שלנו (קצב עדכון, רמת דיוק וצריכת סוללה). שימוש בספריה זו יחליף בעתיד לחלוטין את ה LocationManager.
  • Geocoder – מחלקה המאפשרת לנו לשלוח את המיקום המתקבל מאובייקט ה Location אל שרתי גוגל וקבלת אובייקט Address המייצג את הכתובת המדוייקת של נקודת הציון שהתקבלה.
  • Sensor & SensorManager – כל יתר החיישנים ב Android  עובדים לפי מודל דומה. חיישן ה Accelerometer כדוגמה מייצגת לכל יתר החיישנים במכשיר.
  • Touch – אירוע ה Touch מועבר לאפקליציה על ידי מערכת ההפעלה ואף בה עובר היררכיה פנימית לטיפול בו. נלמד כיצד לקבל ולנתח את ה TouchEvent וכיצד ניתן למצות אותו או להעבירו הלאה.

Advance UI
ממשק משתמש מתקדם

לחץ לדוגמא

  • Overriding existing widget – ניתן לרשת מכל אחד מהאלמנטים הוויזואלים הקיימים ולאפיין אותם לפי דרישה ספציפית.
  • Creating new Widget – על ידי ירושה מהמחלקה View נוכל לייצר רכיב וויזואלי חדש, תודגם יצירת בלוק ציור כרכיב וויזואלי עצמאי אותו ניתן לשלב בכל אפליקציה עתידית.
  • Handling orientation changes – טיפולים אפשריים בשינויי אוריינטציה. ניתן להגדיר Layout יעודי לכל אורינטציה, ולבקש מהמערכת לטפל בזאת עצמאית כחלק משינויי הקונפיגורציה.
  • SavedInstanceState –אובייקט Bundle המכיל את מצב העצם טרם הריגתו על ידי המערכת.
  • Drawable Animation – אניציה כדוגמת GIF אשר מאפשרת מעבר בין תמונות.
  • Tween Animation – אנימציות הניתנות להפעלה על כל רכיב וויזואלי: Rotate, Alpha, Scale, Translate (סיבוב, שקיפות, גודל והזזה) – הגדרתם הראשונית תהיה בקבצי xml.
  • LayoutTransition – אפשרות להגדרת אנימציות שיחולו באופן אוטומטי על כל ה Views בתוך ה ViewGroup
  • ObjectAnimator – ניתן לייצר ולהגדיר אנימציות ישירות על תכונות האובייקטים גם ב Java וגם ב XML.
  • State List  – הגדרה מראש של תמונות או צבעים למצבים שונים של רכיבי ה UI.

Material Design with support library
תבנית עיצוב חדשנית מבית גוגל

לחץ לדוגמא

  • NavigationView & DrawerLayout – שילוב של שני המרכבים הללו יחדיו יאפשר הצגת תפריט המחליק מן הצד לבחירת אפשרויות.
  • Floating Action Button – כפתור הצף מעל האפליקציה ומייצג פעולה מרכזית בה.
  • SnackBar – תחליף להודעות ה Toast המציג הודעה באנימציה בתחתית המסך ופעולה יעודית.
  • CoordinatorLayout – תבנית מתקדמת אשר מטרתה לתאם בין מספר אלמנטים במסך.
  • Floating Labels for Edit Text – מעטפת לתיבות הטקסט הרגילות למען השארת הרמז למשתמש.
  • TabLayout – שילוב שלו עם ViewPager יציג ה Fragments המוחלפים בתפריט Tab.
  • AppBarLayout – תבנית אשר מטרתה לתאם בין רשימות נגללות לתפריטים בראש המסך ולהעלימם בעת גלילתו.
  • CollapsingToolbarLayout – אפשרות למוטט ולהרחיב את התפריט העליון בעת הגלילה.

Communication
תקשורת לקוח-שרת

  • Http protocol – פרוטוקול התקשרות של רשת האינטרנט בין שרת ללקוח.
  • Get\Post requests – בקשות מהלקוח (האפליקציה) לשרת (אינטרנט).
  • Receiving XML & JSON –תשובת השרת ב XML ו JSON. ניתוח התשובות באמצעות המימוש של אנדרואיד ל Xml DOM וה JSON Parser.
  • Picasso – שימוש בספרייה חיצונית להורדה וטעינה של תמונות.
  •  Volley – שימוש בספרייה המנהלת תור משימות אסינכרוני לבקשות HTTP.

Database & Content Providers
מסדי נתונים

  • SQLite DB – מסד נתונים לוקלי לשמירה מרוכזת של כמות גדולה של נתונים חוזרים.
  • Content Provider – רכיב שמטרתו לספק מידע לאפליקציות אחרות.
  • Address Book API– ספר הטלפונים והכתובות כדוגמה לספק מידע כללי.
  • SimpleCursorAdapter – רכיב המייצר מידע מבסיסי נתונים ליחידות הוויזואליות.
  • CursorLoader – טעינה וניהול אסינכרונים של מסדי הנתונים למטרת שיפור ביצועים.

צד שרת – Firebase
בניית מאגר משתמשים, הודעות ומסדי נתונים מרוחקים

לחץ לדוגמא

  • Firebase  – שרות צד שרת דינמי מבית גוגל המאפשר ריכוז והעברת מידע בין הלקוחות.
  • Messaging service – שליחת הודעות (Push notifications) לכל המשתמשים או למשתמש ספציפי.
  • User Authentications –ניהול משתמשים ויצירת פרופיל אישי באפליקציה (הרשמה באמצעות חשבון גוגל, פייסבוק או מייל), הגדרת ה Session והשימוש בה.
  • Remote Database – שמירת מידע אישי לכל משתמש בצד השרת. גישה לנתונים מפלטפורמות שונות כגון אפליקציית Web, android, iOS וממכשירים שונים.  ניתן לרכז ולהעביר מידע בין לקוחות שונים כדגומת בלוג או רשת חברתית.
  • Topics messaging – שליחת הודעות למשתמשים לפי הרשמה לנושאים ספציפים. השליחה מתאפשרת גם דרך ממשק הנהול וגם באמצעות בקשות POST  מתוך הלקוח עצמו.
  • תרגיל מסכם צד שרת – ניהול מערכת תזכורות מבוססת ענן. כל משתמש יכול לייצר חשבון ולהעלות לענן תזכורת ומשימות לביצוע. ניתן יהיה לגשת ליומן המשימות גם מפלטפורמות נוספות. כלומר המשימות ירוכזו בשרת לפי חשבון המשתמש.
  • תרגיל מסכם הודעות  – יצירת קבוצות משתמשים ושליחת הודעות בינהם מתוך האפליקציה באמצעות מערכת ניתוב ההודעות של Firebase (כדוגמת הרשתות החברתיות).

Floating Widgets

אייקונים מרחפים

לחץ לדוגמא

  • Floating Widgets – ניתן לייצר אייקונים המתרחבים לתפריטים שלמים (בעת לחיצה עליהם) אשר יכולים לצוף על פני מסך הבית ועל פני כל האפליקציות המוצגות, ללא תלות בהיכן המשתמש נמצא.
  • מתאים מאוד לנגני מוזיקה הרוצים לאפשר למשתמש שליטה לא משנה באיזה יישום אחר הוא נמצא כרגע – ניתן לראות דוגמה לכך בראשי השיחה הצפים של ה Facebook Messenger

App Shortcuts

קיצורי דרך

לחץ לדוגמא

  • Static App Shortcuts – מאפשר להגדיר לכל אפליקציה תפריט זריז ומוכן מראש של פעולות נפוצות הקשורות אליה אשר יעלה באמצעות לחיצה ארוכה על האייקון שלה.
  • Dynamic App Shortcuts – מתן אפשרות להוסיף לאותו התפריט פעולות נוספות תוך כדי ריצת האפליקציה למשל המשך צפיה בפרק האחרון שנצפה, או חיוג לאיש הקשר האחרון עמו שוחחת, חזרה למקום האחרון שהיית באפליציה לפני הסגירה וכו׳.

פרסום אפליקצייה בחנות

  • הכנת תוכן לחנות (צילומי מסך, מחקר מילות מפתח, כתיבת תוכן בצורה נכונה)
  • שיווק אפליקציות בעזרת קידום אורגני (פניות לעיתונות) ופרסום ממומן (פייסבוק)

 

עזרי לימוד 

כל ההרצאות בקורס מוקלטות בווידאו הניתן לצפייה מהבית לצורך חזרה על השעור והשלמתם במקרה של העדרות. בנוסף, לכל הרצאה ינתן סיכום מפורט הכולל פירוט והסברים של כל הדוגמאות מהכיתה אשר ישמרו בכונן משותף וחוברת תרגילים נוספים הכוללת פתרונות מפורטים לתרגול בבית (עוד 30 אפליקציות נוספות) – חשוב מאוד להקדיש לפחות שעה-שעתיים בבית לכל שעה בכיתה.

מלבד התרגילים בכיתה ובבית הקורס כולל שני פרוייקטים גדולים: הראשון פרוייקט אמצע מודרך הכולל מערכת דינמית לניהול אנשי קשר ומהווה חזרה על 60% מהחומר הנלמד בקורס, והשני פרוייקט סיום לפי רצון התלמיד ובליווי צמוד של המורה בקורס, פרוייקט אשר יוכל לעלות לחנות האפקליציות של גוגל וישמש כחלק מהנסיון המקצועי של התלמיד.

 

תנאי קבלה לקורס

אנגלית ברמה טובה

ראיון אישי עם מנהל בית הספר בו נבדקות היכולות הלוגיות והאנליטיות של התלמיד

אם אתם בעלי נחישת חסרת פשרות אנו מזמינים אתכם להצטרף אלינו.
נשמח לסייע ולענות על כל שאלה, נא מלאו פרטיכם.