こんばんわ。いつもお世話になります。
C#からAndroidのファイルを読み書きしようと考えています。
Windows10, VisualStudio2013, Androidは5.1の組み合わせです。
Androidは、WPDのひとつで、USBで接続すると、MTP(Media Transfer Protocol)でアクセスするので、直接ファイルは読み書きできず、MTP経由でアクセスするらしいです。
Googleで調べたところ、
http://gurizuri0505.halfmoon.jp/20140423/65036
に記事があり、そこでダウンロードできるWPDTransferToDevice.zipが、有力候補のようです。
じっさいに開いて使ってみたのですが、
static void Main() { var devices = new PortableDeviceCollection(); devices.Refresh(); var kindle = devices.First(); kindle.Connect(); kindle.TransferContentToDevice( @"d:\temp\Kindle_Users_Guide.azw", @"g:\documents"); kindle.Disconnect();
というようなコードがあり、
なぜここで、@"g:\documents"とべた書きしているのか、理由がわからず困っています。
@"d:\temp\Kindle_Users_Guide.azw"
がPCのローカルファイルで、
@"g:\documents"
がデバイス(ここではkindleと変数名をつけてますが、まあAndroidのdocumentsというフォルダなのだろうとは想像がつくのですが、なぜg:とドライブレターを指定できるのでしょう?
@"c:\01.jpg"
@"g:\Download"(AndroidにDownloadフォルダはある)
と書き換えてみてこれを実行すると、
public void TransferContentToDevice(string fileName, string parentObjectId)
{
IPortableDeviceContent content;
this._device.Content(out content);
IPortableDeviceValues values = GetRequiredPropertiesForContentType(fileName, parentObjectId); PortableDeviceApiLib.IStream tempStream; uint optimalTransferSizeBytes = 0; content.CreateObjectWithPropertiesAndData( values, out tempStream, ref optimalTransferSizeBytes, null);
というこの最後の行で、フォルダが見つからないというエラーになります。
どう指定すればよいものでしょう?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/20 08:06
2016/05/20 10:30 編集
2016/05/23 11:24