none
קריאת קבצים מאנדרואיד באמצעות C# - מצב MTP RRS feed

  • שאלה

  • שלום.

    חיפשתי ולא הצלחתי למצוא דרך לקריאה וכתיבת קבצים לאנדרואיד באמצעות #C.

    כוונתי היא להורדה למחשב של תמונות ושירים המאוחסנים במכשיר, או העלאה של תמונות ושירים אל המכשיר (בזמן שהוא מחובר למחשב).

    כידוע, המכשיר יכול להיות מוגדר כמצלמה, ככונן USB או MTP .

    אני מחפש דרך לעבוד עם הסלולרי כאשר הוא מוגדר כMTP (אם הוא מוגדר כUSB זה עבודה פשוטה עם כוננים וקבצים).

    האם מישהו יודע? התנסה בכך?

    תודה רבה.

    יום שלישי 28 אפריל 2015 13:51

כל התגובות

  • קריאה וכתיבה של קבצים במצב MTP - media transfer protocol מורכבת הרבה יותר מהצורה שעובדים בכל מערכת הפעלה. באופן כללי מצאתי תקציר, משהו שצריך להיות כמו:

       var drives = DriveInfo.GetDrives();
    
       var removableFatDrives = drives.Where(
        c=>c.DriveType == DriveType.Removable &&
        c.DriveFormat == "FAT" && 
        c.IsReady);
    
       var andriods = from c in removableFatDrives
               from d in c.RootDirectory.EnumerateDirectories()
               where d.Name.Contains("android")
               select c;

    ואחרי כן אתה יכול להעביר את הקבצים

    String LocalPC_FileLocation = "C://mydoc//mylocation//imagefile";
    File.Move(LocalPC_FileLocation , locationofandroiddirectory );

    אבל אני מציע לבדוק את המדריך הבא לעומק (3 חלקים של המדריך) כדי לקבל יותר הבנה:

    http://blogs.msdn.com/b/dimeby8/archive/2006/10/04/sending-mtp-commands-through-wpd-_2800_part-1_2900_.aspx
    http://blogs.msdn.com/b/dimeby8/archive/2006/10/13/sending-mtp-commands-through-wpd-part-2-data-to-the-device.aspx
    http://blogs.msdn.com/b/dimeby8/archive/2006/10/16/sending-mtp-commands-through-wpd-part-3-data-from-device.aspx

    כמו כן תבדוק את הקישור הבא אם הוא עוזר

    http://www.andrewt.com/blog/post/2013/06/15/Fun-with-MTP-in-C.aspx


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    • הוצע כתשובה על-ידי Eran Sharvit יום רביעי 29 אפריל 2015 11:27
    • סומן כתשובה על-ידי Eran Sharvit יום ראשון 03 מאי 2015 10:51
    • סימון כתשובה בוטל על-ידי maisels1 יום שני 01 יוני 2015 10:53
    יום רביעי 29 אפריל 2015 06:01
    מנחה דיון
  • תודה רבה רבה וסליחה על העיכוב בתגובה - משום מה לא קיבלתי התראה על תשובה...

    בכל אופן, ניסיתי את הלינקים ששלחת לי, לפני ששלחתי לפה את השאלה. 

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

    לצורך העניין - המשתנה removableFatDrives - ריק. למרות שמבחינת ווינדוס אני רואה את ההתקן מחובר.

    זו הסיבה שבשאלה שאלתי גם האם מישהו התנסה בכך.

    שוב תודה רבה. 

    יום שני 01 יוני 2015 10:59
  • ערב טוב,

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

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

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

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

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    יום שלישי 02 יוני 2015 15:13
    מנחה דיון
  • 1. היתה לי הגדרה לא נכונה. עכשיו קיבלתי התראה על תשובה באופן מידי.

    2. אין פה יותר מדי מה לשחזר וזה גם לא קשור לפיתוח אנדרואיד אלא לפיתוח #C.

    אם יש לי מכשיר אנדרואיד מחובר למחשב שלי באופן שהווינדוס מזהה אותו ואני רואה אותו תחת my computer, ואז אני מפעיל סתם consoleAplication שלא כתוב בו כלום מלבד הקוד שהבאת לי - אני מקבל list ריק.

    אם האנדוראיד היה מחובר במצב של USB, או סתם USB היה מחובר - הייתי רואה אותו מיד בשורה הזו: 

     var drives = DriveInfo.GetDrives();

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

    תודה רבה ובהצלחה.

    יום שלישי 02 יוני 2015 15:24
  • הבנתי את הבעיה :-)

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

    זה מעניין ואם יהיה לי זמן אני אבדוק את הנושא מעט יותר.
    בדיוק בשבוע הקרוב, אני עובד על כמה התקנות של מערכות windows 10 ושרתי SQL 2016 ותוכנות אופיס 2016 לצרכי בדיקות. אם יהיה לי זמן אני אקים גם אמולטור לאנדרואיד ואם כן אז אני אבדוק זאת.

    בכל מקרה אם אתה מוצא פתרון אנא צרף לנו הסבר לפתרון שמצאת וכן למה הפתרון שרשמתי לך לא עבד  :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    יום שלישי 02 יוני 2015 16:49
    מנחה דיון
  • תודה רבה.

    בהצלחה בהתקנות הרבות.

    נראה לי שאין צורך באימולטור של אנדרואיד לצורך הנושא הספציפי. 

    אם יהיה לי פיתרון אעדכן.

    יום רביעי 03 יוני 2015 06:13