2008-11-06 34 views
11

me gustaría escribir una aplicación que va a copiar los archivos MP3 a un SanDisk Sansa M240. SanDisk no tiene una letra de unidad y utiliza MTP para la transferencia de archivos. Me tropecé con la muestra de conexión al dispositivo en: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspxescribir archivos en el dispositivo a través de WPD MTP C#/VB.net

pero una vez conectado, no puedo entender cómo copiar archivos/crear carpetas en el dispositivo.

Estoy muy sorprendido de que no hay envolturas .Net para esta biblioteca COM.

Respuesta

3

para transferir archivos a través de MTP con C#:

  1. descargar este paquete NuGet: PortableDevices

  2. Añadir referencias a estas bibliotecas 4 COM:

    • PortableDeviceClassExtension
    • PortableDeviceConnectApi
    • PortableDeviceTypes
    • PortableDeviceApi
  3. Tomar las DLL bajo obj\Debug y ponerlos en bin\Debug:

    • Interop.PortableDeviceClassExtension.dll
    • Interop.PortableDeviceConnectApiLib.dll
    • Interop.PortableDeviceTypesLib.dll
    • Interop.PortableDeviceApiLib.dll

Ahora puede utilizar la siguiente función para listar todos los dispositivos, aunque FriendlyName no parece ser de trabajo (se devuelve una cadena vacía):

private IDictionary<string, string> GetDeviceIds() 
    { 
     var deviceIds = new Dictionary<string, string>(); 
     var devices = new PortableDeviceCollection(); 
     devices.Refresh(); 
     foreach (var device in devices) 
     { 
      device.Connect(); 
      deviceIds.Add(device.FriendlyName, device.DeviceId); 
      Console.WriteLine(@"DeviceId: {0}, FriendlyName: {1}", device.DeviceId, device.FriendlyName); 
      device.Disconnect(); 
     } 
     return deviceIds; 
    } 

El siguiente paso es obtener el contenido desde el dispositivo, que se realiza de este modo:

var contents = device.GetContents(); 
Cuestiones relacionadas