C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#wpfでUSB接続したandroidへコピーしたい

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■89627 / inTopicNo.1)  C#wpfでUSB接続したandroidへコピーしたい
  
□投稿者/ のりっち (5回)-(2018/12/11(Tue) 09:01:03)

分類:[C#] 

いつもお世話になっております。

androidにUSB接続し、C#wpfアプリでandroidの内部ストレージへファイルコピーしたいと
考えております。

パソコンでC#wpfアプリを起動し、ボタンをクリックするとパソコン上のテキストファイルを
androidの内部ストレージにファイルコピーしたいのですが、
内部ストレージのパス指定方法が不明だったり、そもそもセキュリティ上可能であるのか等、
ご教授いただければ幸いです。

よろしくお願いいたします。

引用返信 編集キー/
■89628 / inTopicNo.2)  Re[1]: C#wpfでUSB接続したandroidへコピーしたい
□投稿者/ 魔界の仮面弁士 (1985回)-(2018/12/11(Tue) 09:39:27)
2018/12/11(Tue) 09:46:06 編集(投稿者)

No89627 (のりっち さん) に返信
> androidにUSB接続し、C#wpfアプリでandroidの内部ストレージへファイルコピーしたいと
> 考えております。

Windows 向けの WPF 開発ということですね。
Android 向けの XAML アプリを作成しているのではなく。


> androidの内部ストレージにファイルコピーしたいのですが、

PC とケーブルで接続した後、Android 側を ファイル転送モードに設定しておくと、
Android 端末が WPD (Windows Portable Device) デバイスとして見えるので、
C# 側から MTP (メディア転送プロトコル)で転送する感じではないでしょうか。

https://www.ipentec.com/document/list/tag?q=WPD
http://www2.koyahatataku.com/blog/2017/09/26/c%E3%81%AEwpdmtp%E6%93%8D%E4%BD%9C/

あるいは Folder.CopyHere(FolderItem) メソッドでもいけるかな…? (未確認)
https://docs.microsoft.com/en-us/windows/desktop/shell/folder
引用返信 編集キー/
■89629 / inTopicNo.3)  Re[2]: C#wpfでUSB接続したandroidへコピーしたい
□投稿者/ のりっち (8回)-(2018/12/11(Tue) 09:51:40)
ご回答ありがとうございます!
確認してみます!

No89628 (魔界の仮面弁士 さん) に返信
> 2018/12/11(Tue) 09:46:06 編集(投稿者)
>
> ■No89627 (のりっち さん) に返信
>>androidにUSB接続し、C#wpfアプリでandroidの内部ストレージへファイルコピーしたいと
>>考えております。
>
> Windows 向けの WPF 開発ということですね。
> Android 向けの XAML アプリを作成しているのではなく。
>
>
>>androidの内部ストレージにファイルコピーしたいのですが、
>
> PC とケーブルで接続した後、Android 側を ファイル転送モードに設定しておくと、
> Android 端末が WPD (Windows Portable Device) デバイスとして見えるので、
> C# 側から MTP (メディア転送プロトコル)で転送する感じではないでしょうか。
>
> https://www.ipentec.com/document/list/tag?q=WPD
> http://www2.koyahatataku.com/blog/2017/09/26/c%E3%81%AEwpdmtp%E6%93%8D%E4%BD%9C/
>
> あるいは Folder.CopyHere(FolderItem) メソッドでもいけるかな…? (未確認)
> https://docs.microsoft.com/en-us/windows/desktop/shell/folder
引用返信 編集キー/
■89641 / inTopicNo.4)  Re[3]: C#wpfでUSB接続したandroidへコピーしたい
□投稿者/ のりっち (10回)-(2018/12/12(Wed) 10:52:22)
提示いただいたURLを基に、MTP転送を実装してみました。
windows formからwpfに置き換えました。

内部ストレージのファイル名の取得や、アップデートまではできたのですが、
アップデートする際、すでに内部ストレージに同名のファイル名がある場合、
例外が発生してしまいます。

すでにファイルがある場合、強制的に上書きしてくれるオプション等が
あるのでしょうか。

エラーが発生した箇所を下記に載せます。
お手数ですが、よろしくお願いします。


System.Runtime.InteropServices.ComTypes.IStream targetStream =
(System.Runtime.InteropServices.ComTypes.IStream)tempStream;
try
{
using (var sourceStream =
new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[optimalTransferSizeBytes];
int bytesRead;
do
{
bytesRead = sourceStream.Read(buffer, 0, (int)optimalTransferSizeBytes);

if (bytesRead <= 0)
{
break;
}

IntPtr pcbWritten = IntPtr.Zero;
targetStream.Write(   ★ここでエラーが発生します。
buffer, (int)bytesRead, pcbWritten);
} while (true);
}
targetStream.Commit(0);
}

引用返信 編集キー/
■89714 / inTopicNo.5)  Re[4]: C#wpfでUSB接続したandroidへコピーしたい
□投稿者/ のりっち (12回)-(2018/12/17(Mon) 22:08:21)
エラーの解消法がわからなかったので、
wpfでファイルをアップロードする際はタイムスタンプ
をつけ、ファイル名が被らないようにしました。
Androidでもアプリを起動しますので、起動時に
Wpfでアップロードした古いタイムスタンプのファイルを削除し、最新のみ残すことで対応しました。
ご回答ありがとうございました。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ