none
怎么用C#代码对安卓4.1的(MTP)媒体设备进行读写操作。求助! RRS feed

  • 问题

  •     我现在相对平板电脑的SD卡进行操作,安卓4.0之前版本的是有盘符的,但是安卓4.1以后的系统是打开(mtp)媒体设备,怎么用C#代码对安卓4.1的(MTP)媒体设备进行读写操作。求助!

    2014年1月9日 10:45

答案

  • 你好:

    我没有这方面的经验,但是你可以尝试一下下面的方法。

    1. 安装Adroid SDK Tool

    2. 其中有一个程序叫adb.exe,可以通过调用这个程序来通过数据线操作Adroid设备

    参考:http://diptimayapatra.wordpress.com/2013/07/04/copying-a-file-to-sd-card-image-using-adb-exe-for-android-emulator/

    C#代码:

    Process adb = new Process();
    adb.StartInfo.FileName = "adb.exe";
    adb.StartInfo.Arguments = arguments;
    adb.StartInfo.CreateNoWindow = false;
    adb.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    adb.StartInfo.UseShellExecute = false;
    adb.StartInfo.RedirectStandardError = true;
    adb.StartInfo.RedirectStandardOutput = true;
    var stdOutput = new StringBuilder();
    adb.OutputDataReceived += (sender, args) => stdOutput.Append(args.Data);
    try
    {
        adb.Start();
        adb.BeginOutputReadLine();
        adb.WaitForExit();
    
    }
    catch (Exception e)
    {
        MessageBox.Show("Error while executing: " + e.Message.ToString());
    }
    if (adb.ExitCode == 0)
    {
    
        return stdOutput.ToString() + "\r\n";
    }
    else
    {
        return "Device not found.";
    }

    希望能帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月10日 9:27
    版主
  • 访问android和访问其他类型的MTP设备一样,C#没有专门的类库支持,对MTP设备读取的API请参考:

    http://msdn.microsoft.com/en-us/library/dd389005(v=vs.85).aspx

    在C#工程里可以用COM来操作MTP设备,在新建工程时,添加COM引用:

    PortableDeviceApi 1.0 Type Library

    PortableDeviceTypes 1.0 Type Library

    PortableDevice.....等。

    以下文章是使用COM来访问MTP设备的例子:

    http://blogs.msdn.com/b/wpdblog/archive/2007/11/26/creating-a-temperature-sensor-gadget-for-windows-sidebar.aspx

    2014年1月15日 7:21

全部回复

  • 你好:

    我没有这方面的经验,但是你可以尝试一下下面的方法。

    1. 安装Adroid SDK Tool

    2. 其中有一个程序叫adb.exe,可以通过调用这个程序来通过数据线操作Adroid设备

    参考:http://diptimayapatra.wordpress.com/2013/07/04/copying-a-file-to-sd-card-image-using-adb-exe-for-android-emulator/

    C#代码:

    Process adb = new Process();
    adb.StartInfo.FileName = "adb.exe";
    adb.StartInfo.Arguments = arguments;
    adb.StartInfo.CreateNoWindow = false;
    adb.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    adb.StartInfo.UseShellExecute = false;
    adb.StartInfo.RedirectStandardError = true;
    adb.StartInfo.RedirectStandardOutput = true;
    var stdOutput = new StringBuilder();
    adb.OutputDataReceived += (sender, args) => stdOutput.Append(args.Data);
    try
    {
        adb.Start();
        adb.BeginOutputReadLine();
        adb.WaitForExit();
    
    }
    catch (Exception e)
    {
        MessageBox.Show("Error while executing: " + e.Message.ToString());
    }
    if (adb.ExitCode == 0)
    {
    
        return stdOutput.ToString() + "\r\n";
    }
    else
    {
        return "Device not found.";
    }

    希望能帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月10日 9:27
    版主
  • 访问android和访问其他类型的MTP设备一样,C#没有专门的类库支持,对MTP设备读取的API请参考:

    http://msdn.microsoft.com/en-us/library/dd389005(v=vs.85).aspx

    在C#工程里可以用COM来操作MTP设备,在新建工程时,添加COM引用:

    PortableDeviceApi 1.0 Type Library

    PortableDeviceTypes 1.0 Type Library

    PortableDevice.....等。

    以下文章是使用COM来访问MTP设备的例子:

    http://blogs.msdn.com/b/wpdblog/archive/2007/11/26/creating-a-temperature-sensor-gadget-for-windows-sidebar.aspx

    2014年1月15日 7:21