זיהוי המתקשר מתבלבל

אפליקציות, מערכות הפעלה של גוגל אנדרויד - ginger bread, ice cream sandwich, froyo, jelly bean
moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #1 

יש לי שני אנשי קשר עם אותו מספר טלפון חוץ מהקידומת. אחד עם 052 והשני 03.
כשאני מקבל שיחה מה052, מופיע לי על המסך איש הקשר עם ה03.
יש מה לעשות בנידון ?
משה

razi_pazi
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 390
הצטרף: יוני 2012
נתן תודות: 1 פעם
קיבל תודות: 4 פעמים

שליחה #2 

מכיר את הבעיה מבלקברי.
אני חושב שאם תגדיר את המספרים תחת אותה קטגוריה הוא לא יתבלבל.
נגיד מופיע לך יוסי נייד 0526666666
ו אורי בית 036666666.

אז אם תרשום את המספר בבית של אוי כאילו זה ניד. כלומר אורי ניד 036666666 הוא לא יחליף בינם. לא ניסיתי אבל יש בזה היגיון.

בכל אופן אני בגלל ההתחכמות של הבלקברי קיבלתי SMS מסבתא שלי לאחר מותה...

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #3 

אכן פתר, תודה. (Y)
מי שבדקתי איתו אמר שזה ידוע וקיים "בכל הטלפונים" .
מה הבעייה לבדוק מספר מלא ?
משה

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #4 

אני בטוח משה שתצליח להגיע לבד לתשובה :)

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #5 

osherov כתב:אני בטוח משה שתצליח להגיע לבד לתשובה :)
...
תן רמז.
אולי לא תמיד יש מספר מלא ברשתות מסוימות (לא יודע אם במציאות, אך תאורטית) , אך במקרה המדובר המכשיר הציג מספר מלא, אז מה מונע ממישהו להשתמש בו ל lookup?
נערך לאחרונה על ידי moco ב 26/06/2012 22:06, נערך פעם 1 בסך הכל.
משה

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #6 

אגב הנוקיה שלי דווקא הבדיל בין שני האנשים הללו.
משה

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #7 

המכשירים נבנו לכל הרשתות בעולם, נתוני המתקשר (Caller ID) יכולים להשתנות ממפעיל למפעיל
המספר 054-123456 לדוגמא יכול להגיע למכשיר אחר כמספר:
054-123456
972-54-123456
123456 (בחלק מהמקומות במידה שאתה מנוי אצל אותו המפעיל הקידומת יורדת)

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

urik79
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 4318
הצטרף: יוני 2007
שם מלא: אורי
מיקום: סביוני יאבוייה
נתן תודות: 59 פעמים
קיבל תודות: 130 פעמים

שליחה #8 

אכן נתקלתי בעבר בתופעה הזו בסוני אריקסון W800i...
זה ממש עצבן אותי שם
כל מה שרציתי כל מה שקניתי
כל מה שאספתי זה לא מספיק
כל מה ששמרתי כל מה שחמדתי
בסוף הבנתי זה לא מספיק

sam22
סמל אישי של משתמש
חבר במועדון ה-20K
חבר במועדון ה-20K
תגובות: 20358
הצטרף: נובמבר 2006
מיקום: תל אביב
נתן תודות: 938 פעמים
קיבל תודות: 819 פעמים

שליחה #9 

לדעתי, כמו שניתן למזג בין אנשי קשר ניתן גם להפריד.
העם דורש..... כל מיני דברים

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #10 

הפתרון די פשוט: נותנים למשתמש advanced settings (שאומנם לא יעניין את הרוב) לקבוע כמה ספרות לבדוק, כלומר לשנות את ה7 ספרות ל9 או 10 ספרות.
בטח מישהו כבר עשה tweak כזה.
משה

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #11 

מסתבר שרבים מתלוננים על דברים דומים: http://code.google.com/p/android/issues/detail?id=8770

מעבר לכך, לגוגל יש ספרייה לטיפול בנושא, אז השאלה היא למה לא משתמשים בה , או שכן אך לא מאפשרים לקנפג פרמטרים עבורה: http://code.google.com/p/libphonenumber/
משה

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #12 

הפתרון לא פשוט. אני מביא לכם דוגמא (ממכשיר אמיתי) של מספרי Caller ID (את המספרים עצמם כמובן ששיניתי):
541111111
1541111111+
1541111111
972541111111+
8001111111
0541111111

הדבר הראשון שמתבקש לשאול כאן הוא למה לא לבדוק קודם את כל המספר (עם הקידומת, עם הסיומת) ורק אח"כ, במידה ואין התאמה, לבדוק רק את X הספרות האחרונות (נניח 6). הסיבה לכך (אני מניח) קשורה לזמן החיפוש הארוך יותר שייגרם פה. אם יש לך 5000 אנשי קשר במכשיר, אז לכל מתקשר יש צורך:
1. לחפש Full Match לכל המספר. אם לא נמצא אז
2. לחפש partially match על חלק מהמספר (לדוגמא לחפש 97254111111 במקום 97254111111+), אם לא נמצא אז
3. לחפש Full Match למספר בלי "הקידומת"

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

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

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #13 

הבנתי, אבל על זה נאמר Perfect is the enemy of the good.
כלומר, פתרון מושלם הוא אומנם בלתי אפשרי אם דורשים זמן חישוב מהיר מאוד, אבל מה שהצעתי נותן פתרון טוב ואפילו טוב מאוד.
למשל, אם בדוגמא שנתת אני אוכל לקבוע שמשתמשים ב9 ספרות (וכך יאנדקסו את בסיס הנתונים), אז אני מצליח בכל המספרים חוץ מה800. בעצם אני יכול להצליח גם שם אם אני רושם את מספר ה800 כמספר נוסף של אותו איש קשר.
משה

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #14 

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

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #15 

משה,
אם תקבע שמשתמשים נניח ב 9 ספרות אז אתה בבעיה. כי אז מה שיקרה הוא שהרבה פעמים ירשם לך רק המספר טלפון בלי השיוך שלו לשם שמופיע באנשי הקשר שלך. לדוגמא, נניח שרשמת שימוש ב 9 ספרות ובאנשי הקשר שלך רשמת את המספר הבא:
054-111111
אבל בפועל ה Caller ID שהגיע למכשיר הוא 111111 (כי נניח אתם באותה הרשת). זאת תהיה בעייה גדולה הרבה יותר מאשר הסיכוי שיש לך 2 אנשי קשר עם אותו מספר (מה גם שזה ידרוש ינדוקס מחדש כל פעם שאתה משנה את ההגדרה הזאת)

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #16 

או. קי., אז אפשר לפתור את זה בשאילתה עם שני pass-ים, כשהשני קצרצר (משהו כמו multi-segment keys בלשון DB).

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

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #17 

הפתרון הוא מאוד פשוט.
ב pass הראשון אתה שולף מבסיס הנתונים את כל המספרים שיש להם match מלא למספר המאונקס (ללא הסיומת)=פעולה מהירה מאוד
במקרה ויש לך יותר ממספר אחד (מקרה חריג מאוד), אז אתה נכנס לבדיקה נוספת בה אתה בוחן מי מהמספרים ששלפת הוא הקרוב ביותר ל Caller ID שהגיע =פעולה מהירה מאוד

אולי זאת גם הסיבה שבחלק מהמכשירים זה כן עובד בצורה תקינה

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #18 

זה בדיוק מה שכתבתי :)
משה

osherov
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #19 

גם שאני מבין אותך אני לא מבין אותך

moco פותח השרשור
סמל אישי של משתמש
גורו
גורו
תגובות: 20597
הצטרף: דצמבר 2004
נתן תודות: 199 פעמים
קיבל תודות: 351 פעמים

שליחה #20 

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

שלח תגובה

חזור אל “Android - אנדרויד”