SocialMediaApp אפליקציית תכנון יחידות לימוד: מגמת 5 בהיקף עבודת גמר 883599 ותכנות מערכות מגיש: איתן אלקיים שם המורה: כלנית אלטמן בית הספר: נופי הבשור מבוא מטרת ה אפליקציה – בעידן המודרני: הרשתות החברתיות הפופולריות גורמות לתחושת כישלון ופספוס בקרב מרבית הנערים, מדוע? האפליקציות המובילות משתמשות באלגוריתמים המקדמים רק את התוכן שמקבל את החשיפה הרבה ביותר (לייקים, שיתופים, צפיות וכו') ואיזה תוכן זוכה בתהילת עולם שכזו? דוגמניות, אנשים עשירים \ מצ ליחים, משפיענים ואנשים ש"חיים את החלום", והנער הממוצע? בחיים לא יגיע לרמות העושר, לאורח החיים, ולרמת היופי שמפורסמי הרשתות מקדמים במרץ, ומה התוצאה? המון נערים מאובחנים עם הפרעות דימוי - גוף, נכנסים לדיכאון ומפתחים תחושת נחיתות שמכניסה אותם למרוץ בלתי - נגמר של חיפוש ולידציה חברתית, שלרוב גם היא: נעשית דרך אותן רשתות חברתיות.. חשוב לזכור: מטרת הרשתות היא , בראש ובראשונה , קידום תקשורת טבעית ממרחק ושיתוף מידע בין בני אדם, ואלו בדיוק הערכים העיקריים שקודמו במהלך פיתוח האפליקציה, האפליקציה נבנתה תוך שימת דגש על שימושיות , שמירה ושיתוף של מידע, ולא על משיכת העיניים של הצופה והשארתו דבוק למסך, הפוסטים מוצגים בצורה כרונולוגית - שמאפשרת לכולם לקבל במה באו פן שווה, באפליקציה אין לייקים ואלמנטים שיוצרים היררכיה מיותרת בין משתמשים, ובנוסף: כל פוסט שעלה לא ניתן למחיקה \ עריכה, החוסר בהזדמנות שנייה מייצג את העולם האמיתי - שבו דברים ה נאמרים צריכים להיבחר בקפידה.. יכולות ה אפליקציה – האפליקציה ממלאת 4 תפקידים עיקריים : - שמירת מידע אישי בקובץ פנימי בסמארטפון. - שליחת הודעות פרטיות למשתמשים בפונקציית SMS - העלאת פוסטים פומביים המתויגים לפי נושאים לבחירת המשתמש. - צפייה בפוסטים שהועלו לאפליקציה מכל משתמש (וגם מאורחים!). - צפייה בספר הפרויקט במסגרת האפל יקציה בא מצעות רכ יב WebView תפעול ה אפליקציה – להלן תרשים זרימה של התכנים , המסכים, והתתי - מסכים השונים: – מדריך למשתמש שלבי שימוש באפליקציה: - ל הרשמה \ התחברות לאפליקציה , יש להיכנ ס ל עמוד ה ashboard D דרך התפריט התחתי, תחילה יופיע מסך ההתחברות, במידה ואנו מעוניינים להתחבר נמלא בו את הפרטים ונלחץ S ign in , אחרת: נלחץ על הטקסט: “Haven’t signed up yet?” ויופיע מסך ההרשמה, לאחר ההרשמה יופיע באופן אוטומטי פרטי ההתחברות וכל שנותר יהיה לחיצה על S ign in - ל צפייה בפוסטים שהועלו עד כה , בסדר כרונולוגי, יש ל לח ו ץ על עמוד ה ome H בתפריט התחתי, שם נוכל לגלול ולראות את המידע על כל פוסט (תאריך \ זמן ההעלאה, שם המעלה, כותר ת הפוסט, תוכן הפוסט ותגיות ) - ל העלאת פוסט לאפליקציה , יש להי כנס לעמוד ה Share דרך התפריט התחתי ו ל מלא את פרטי הפוסט (כותרת, תוכן ותגיות), נלחץ על כפתור ה P ost ונאשר את ההעלאה באמצעות לחיצה על Yes דרך הדיאלוג שיופיע. - ל שליחת הודעה פרטית בפונקציית SMS , יש להי כנס לעמוד ה irect D דרך התפריט התחתי, יופיע הסבר קצר על העמוד וכפתור C onnect , נלחץ עליו ונמלא את פרטי איש הקשר שאנו מעוניינים לשלוח לו הודעה (מספר טלפון) ותוכן ההודעה ו לאחר מכן נלחץ על S end , ההודעה תשלח שניות לאחר מכן בהינתן והאפליקציה קיבלה הרשאת SMS - ל שמירת מידע אישי , כגון: יומן או רשימת קניות, יש להי כנס לעמוד ה ashboard D דרך התפריט התחתי ו ל לח ו ץ על אופציית ה P rivate Notes , שם נוכל למלא את תיבת הטקסט הגדולה במלל וללחוץ על כפתור ה S ave , המידע ישמר שם גם לאחר התנתקות ויציאה מהאפליקציה. - ל צפייה במידע כללי אודות האפליקציה , יש להי כנס לעמוד ה ashboard D דרך התפריט התחתי ו ל לח ו ץ על אופציית ה A pp Information ( בנוסף ניתן לראות את ספר הפרויקט ) - ל צפייה בתשובות לשאלות נפוצות , יש להי כנס לעמוד ה ashboard D דרך התפריט התחתי ו ל לח ו ץ על אופציית ה Freq Questions - ל צפייה בפרטי המשתמש , יש להיכנס לעמוד ה ashboard D דרך התפריט התחתי וללחוץ על אופציית ה Account Info בכדי לשנות סיסמת משתמש , יש להיכנס לעמוד ה D ashboard דרך התפריט התחתי וללחוץ על אופציית ה Account Info פירוט מסכים – מסך הבית ( :(Home זהו המסך הראשון שהמשתמש רואה והוא מכיל את הפוסטים השונים באפליקציה, למשתמש האופציה לגלול ולצפות בפוסטים בסדר כרונולוגי בין אם מחובר לאפליקציה ובין אם לא מסך הבית בעת כניסה מסך הבית לאחר גלילה מסך ה ashboard D ( :(Account במסך ה D ashboard כפתורים המפנים לחלקות תוכן מופרדות הקשורות בניהול החשבון האישי ומידע כללי על האפליקציה, ביניהן: הרשמה \ התחברות, מידע אודות האפליקציה + ספר הפרויקט, שאלות נפוצות על האפליקציה, פתקים אישיים, הגדרות פרטיות (שינוי סיסמה), וצפייה בפרטי המשתמש. המעבר בין התכנים נעשה בשילוב אנימציה מתאימה. מסך ה D ashboard דוגמא למעבר בין התכנים ב D ashboard מסך ה Sign in \ Sign out : חלקת תוכן הנמצאת בתוך ה D ashboard , בעת הכניסה מופיעה למשתמש האופציה להתחבר עם משתמש קיים באמצעות שם משתמש וסיסמה, במידה והמשתמש צריך ליצור חשבון חדש ישנה האופציה " Haven’t signed up yet? " שמעבירה לטופס ההרשמה עם אנימציה מתאימה דוגמא למעבר בין מסך ההתחברות לאחר התחברות מוצלחת מסך מידע אודות האפליקציה ( App Information :) חלקת תוכן הנמצאת בתוך ה D ashboard , במסך זה מופיע מידע כללי אודות האפליקציה, כגון: שם האפליקציה, מדוע האפליקציה נוצרה, מתי היא פותחה, באיזו שפות השתמשו בפיתוח שלה , כפתור למעבר למסך ספר הפרויקט ועוד.. מסך המידע מסך ספר הפרויקט ( ProjectBookActivity :) מסך שאליו מגיעים דרך מס ך המידע אודות האפליקציה לאחר לחיצה על כפתור ה ” project book ” , במסך זה ניתן לראות את ספר הפרויקט ד רך רכיב WebView המקשר את הא פליק ציה לאינ טרנט ו מציג דף בו ספר הפרויקט שמור בע נן. מסך שאלות נפוצות ( Freq Questions ) חלקת תוכן הנמצאת בתוך ה D ashboard , במסך זה מופיעות תשובות לשאלות נפוצות אודות השימוש באפליקציה , כגון: איך משנים סיסמה? האם ניתן למחוק פוסטים? האם ניתן לשנות שם משתמש או תמונה? וכו'.. מסך השאלות הנפוצות מסך פתקים אישיים ( Private Notes :) חלקת תוכן הנמצאת בתוך ה D ashboard , במסך זה משתמשים רשומים יכולים לקרוא ולערוך פתקים אישיים לשימוש עצמי (כגון: רשימת קניות, תוכנית אימונים, יומן אישי ועוד..). מסך עריכת פתקים אישיים מסך הפתקים לאחר שמירה מסך פרטי משתמש ( Account Info :) חלקת תוכן הנמצאת בתוך ה D ashboard , במסך זה משתמשים רשומים יכולים לצפות בפרטיהם האישיים, כגון: שם משתמש, אימייל וטלפון. מסך פרטי המשתמש מסך הגדרות אישיות ( Private Settings ) : חלקת תוכן הנמצאת בתוך ה D ashboard , במסך זה משתמשים רשומים יכולים לשנות את הסיסמה שלהם, בהנחה והוא זוכר את הסיסמה המקורית. עמוד ההגדרות האישיות לאחר שינוי מוצלח לאחר כישלון מסך העלאת פוסט ( hare S ) חלקת תוכן הנמצאת במרכז ההעלאה, במסך זה משתמשים רשומים יכולים להעלות פוסטים פומביים, ולקטלג אותם לפי תגיות וכותרת , את הפוסט כלל המשתמשים יכולים לראות במסך הבית. מסך העלאת פוסט לאחר לחיצה על כפתור הפרסום מסך הכניסה לשליחת הודעה פרטית ( irectMessage D ( : חלקת תוכן הנמצאת במרכז שליחת ההודע ו ת, מסך זה מציג ומסביר על האופציה לשליחת הודעה פרטית, עיקרו הוא בכפתור ה Connect אשר מעביר את המשתמש לכתיבת הודעה פרטית. מסך ה D irect הראשי מסך שליחת הודעה פרטית ( DirectMessageActivity :) חלקת תוכן הנמצאת במרכז שליחת ההודעות, למסך זה מגיעים לאחר לחיצה על כפתור ה C onnect במסך הקודם – ובו ממלאים את פרטי המשתמש שאליו רוצים לשלוח הודעה פרטית ולוחצים על כפתור השליחה. z מסך שליחת ההודעה לאחר שליחה מוצלחת התפריט התחתי ( ChipNavigationBar :) התפריט התחתי, אשר מקום הגדרתו הוא ב MainActivity , מנהל את המעבר בין ה fragments והמסכים השונים (ראו תרשים זרימה), התפריט הוא תפריט menu סטנדרטי שעיצובו נעשה באמצעות imported library ייעודי, להלן תמונת התפריט (כאשר האפליקציה במסך הבית): התפריט כולל את האופציות: מסך המשתמש ( D ashboard ), מסך הבית ( Home ), מסך העלאה ( Share ) ומסך הודעה פרטית ( D irect .) הרשאות ( Android Manifest Permissions :) בכדי ששיטות האפליקציה יעבדו במלואן, נדרשות ההרשאות הבאות: android.permission.SEND_SMS – נדרשת כדי לאפשר שימוש בהודעות SMS פרטיות. - שימוש בפרויקט: שליחת הודעת פרטיות במסך ה D irect android.permission.INTERNET – נדרשת כדי להציג דף אינטרנט במסגרת האפליקציה. - שימוש בפרויקט: הצגת דף אינטרנט המציג את ספר הפרויקט במסך ה App Info android.permission.WRITE_EXTERNAL_STORAGE – נדרשת כדי לכתוב לקובץ פנימי. - שימוש בפרויקט: שמירה ועדכון של הפ תקים האישיים הנשמרים בקובץ פנימי. android.permission.READ_EXTERNAL_STORAGE – נדרשת כדי לקרוא מקובץ פנימי. - שימוש בפרויקט: קריאה והצגה של הפתקים האישיים הנשמרים בקובץ פנימי. דרישות מיוחדות ומגבלות: - המערכת מחייבת תקשורת WIFI בכדי להציג את דף ספר הפרויקט בחלקת המידע. - המערכת מחייבת תקשורת סלולר בכדי לשלוח הודעות פרטיות בפונקציית SMS - גרסת אנדרואיד מינימלית: 4.1.1 גרסת 16 API המכשירים עליהם נבדקה המערכת: - אמולטור המבצע אמולציה ל - Pixel 3a XL המריץ אנדרואיד 11 , גרסת 30 API - אמולטור המבצע אמולציה ל - Pixel 3a המריץ אנדרואיד 11 , גרסת 30 API מדריך למתכנת (פירוט הקבצי ם והמחלקות ) פירוט ה Activities – מסך ראשי – ainActivity M תפקיד המסך: זהו המסך הראשי שמכיל את כל התוכן העיקרי באפליקציה בצורת שמירת fragments (subactivities) ושמירת התפריט התחתי הראשי שממנו עוברים בין ה fragments השונים, באופן טבעי: עיקר תכלית המסך הראשי הוא ניהול המעבר בין ה fragments וה activities ושמירת שיטות אחד ות לשם כך, להלן פירוט השיטות של ה Activity : חתימת השיטה תיאור תכליתה onCreate(Bundle SavedInstanceState) יצירת המסך, שיוך המשתנים והגדרת המאזין לתפריט התחתי. bottomNav.setOnItemSelectedListener(i - > { ... }) האזנה ללחיצה על אחד המרכיבים של התפריט התחתי, בעת לחיצה: העברה ל fragment המתאים. buildPrivateNotes(Context context) פעולת onClick לשם בניה והצגה (דרך קריאה מקובץ פנימי) של התוכן בפתקים האישיים בעת לחיצה על הכפתור המתאים ב fragment ה Account [פעולה זו נמצאת ב activity ולא ב fragment המתאים שכן ופעולה זו דורשת גישה לתכונה פרטית של ה activity ] switchToActivityDirect(View view) פעולה מסוג o nClick אשר עוברת ל activity ה Direct בעת לחיצה על הכפתור המתאים ב fragment ה Direct switchToActivityProjectBook(View view) פעולה מסוג onClick אשר עוברת ל activity ה ProjectBook בעת לחיצה על הכפתור המתאים ב fragment ה A ccount saveContentInPrivateNotes(View view ) פעולה מסוג on C lick לשם שמירת הנתונים בפתקים האישיים ( כתיבה בקובץ פנימי) , נקראת בעת לחיצה על כפתור השמירה בחלקת התוכן Private Notes ב fragment ה Account מסך ספר הפרויקט – ProjectBook_Activity תפקיד המסך: הצגת ספר הפרויקט באמצעות רכיב אינטרנט מסוג WebView שמאפשר להציג דף אינטרנט במסגרת האפליקציה (כלומר: בשונה מלחיצה על קישור פשוט, האפליקציה תציג את הדף ללא מעבר לדפדפן ברירת המחדל , אלא בתוך האפליקציה עצמה), אל המסך מגיעים על ידי לחיצה על ה Project Book בתוך חלקת התוכן App Information שנמצאת ב fragment ה A ccount שב M ainActivity , להלן פירוט השיטות ב Activity : חתימת השיטה תיאור תכליתה onCreate(Bundle savedInstanceState) יצירת המסך, שיוך משתנה ה WebView וקריאה לפעולה המעלה את דף האינטרנט על המסך כאשר הפרמטר הוא הלינק לספר הפרויקט. setUpInternetPage(String url) העלאת דף אינטרנט על המסך באמצעות רכיב WebView כאשר הלינק לדף האינטרנט מתקבל כפרמטר. מסך שליחת הודעה פרטית – DirectMessageActivity תפקיד המסך: ש ליחת הודעה פרטית בפונקציית SMS (טלפוניה) לאחר מילוי הפרטים המתאימים (מספר טלפון ותוכן ההודעה), אל המסך מגיעים לאחר לחיצה על כפתור ה Connect ב fragment ה Direct , להלן פירוט השיטות ב Activity : חתימת השיטה תיאור תכליתה onCreate(Bundle savedInstanceState) יצירת המסך. sendMessage(View view) פעולה מסוג onClick לשם שליחת הודעת SMS עם הפרמטרים שהמשתמש הכניס, נקראת בעת לחיצה על כפתור ה S end במסך ה DirectMessageActivity עד כאן פירוט המסכים ( Activities ) השונים, ניתן לראות כי בכל מסך פעולות אח דות, שלרוב קשורות למעבר בין fragments וטיפול במידע היוצא מהם, זאת שכן ואותם fragments מכילים את הרוב המוחלט של השיטות והתוכן , כפי שניתן לראות בנושא הבא פירוט תתי - ה מסכים ( (Fragments – מסך ה ashboard D – ccount_Fragment A הנמצא ב MainActivity תפקיד המסך: בניי ה ושיוך של כרטיסיות ( cardviews ) ה - “ התחברות \ הרשמה ” , “ מידע על האפליקציה ” , “ שאלות נפוצות ” , “ פתקים אישיים ” , “ הגדרות פרטיות ” ו - " מידע על החשבון " והכנסתם ל S crollView מתאים, בנוסף: המסך מאתחל את ה cardviews ככפתורים כך שבעת לחיצה יופיע התוכן המתאים, המסך אחראי גם על ה פונקציות השונות ב כ ל חלקות התוכן שנאמרו לעיל. חתימת השיטה תיאור תכליתה פעולות כלליות Account_Fragment() בנאי לעצם ה fragment , הכרחי ליצירת ה fragment ב MainActivity onCreate(Bundle savedInstanceState) יוצר את מסך ה fragment onCreateView(LayoutInflater inflater, ViewGroup Container, Bundle savedInstanceState) עושה inflate ל view של ה fragment שנמצא בקובץ ה xml : fragment_account_ (כל ו מ ר : מחבר את קובץ הג'אווה לקובץ ה xml המתאים ומציג אותו על המסך), בנוסף: הפעולה משייכת את המשתנים כגון: כפתורים, תיבות טקסט וכולי' לרכיבים המתאימים ב xml בכדי שנוכל לעבוד עליהם באופן דינאמי ב java וגם מגדירה את פעולות המאזינים למשתנים השונים. buildMainView() מארגן את הכרטיסיות והתצוגה הכללית לפי המצב הנוכחי (משתמש מחובר \ משתמש מנותק). פעולות במסך ההרשמה \ התחברות signInOurOut() פעולה הנקראת לאחר זיהוי לחיצה על כפתור ההתחברות \ התנתקות ומטפל במקרה לפי מצב המשתנה הגלובאלי שאומר לנו האם המשתמש מחובר או לא (במקרה והוא מחובר: הפעולה תבצע התנתקות, במקרה והוא מנותק: הפעולה תעבור לדף ההתחברות \ הרשמה). checkIfExist(String Name) פעולת עזר לפעולת ההרשמה: מתחברת לדטאבייס ו בודקת אם השם שמתקבל כפרמטר כבר קיים במערכת. initiateSignUp() מ תחבר לדטאבייס ומ פעיל את הליך ההרשמה בעת לחיצה על כפתור ה S ign up ומטפל במקרים השונים (נתונים שגויים, נתונים חוקיים, מחסור בנתונים וכדומה..) initiateSignIn() מ תחבר לדטאבייס ומ פעיל את הליך ההתחברות בעת לחיצה על כפתור ה S ign in ומטפל במקרים השונים (נתונים חוקיים,