問題タブ [mtp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android M のデフォルトの USB 設定を「充電のみ」ではなく MTP に設定するにはどうすればよいですか?
デバイス (Nexus 5、Android M Preview 3) を USB 経由で接続すると、USB 構成は常にデフォルトで「充電のみ」になります。
デバイスの USB ポートに障害があり、ぶつかると切断して再接続することがあり、毎回通知ドロワーから手動でモードを MTP (メディア転送プロトコル) に変更する必要があるため、これは非常に問題です。
- デバッグモードが有効です
- 現像設定 -> USB Configuration は MTP に設定されています。
c# - MTP デバイスを検出してファイルのコピーを開始する方法は?
外部ドライブが追加されたとき (ドライブ文字を取得するとき) を現在検出し、それらから特定のファイルのコピーを開始する VB アプリがあります。カメラを接続するだけで(たとえば)、アプリが必要なファイルを抽出する(オプションで外部デバイスから削除する)のは非常に便利です。
一部のデバイス、たとえば GoPro Hero4 などは、ドライブ文字でマウントせず、MTP デバイスとして表示されます。私のコードはそれを検出しません。それについてのガイダンスが欲しいです。
「StorageDevice」クラスを使用する必要がありますか? WMIの何か?WDP?
StorageDevice には必要なものが含まれているように見えますが、ドキュメントは高レベルであり、できれば VB または C# での確かな例を探しています。最善の解決策について何か提案はありますか?
編集:他の管理Q&Aへのリンクに感謝しますが、これは、a)ファイルをコピーするだけでなく、デバイス接続イベントを検出したい、およびb)その他のQ&Aのリンクがまばらなプロジェクトにつながるという点で多少異なると思います文書化されています。たぶん答えはそこにあるかもしれませんが、私はただ答えを得ようとしています。
windows-10 - Windows 10 ユニバーサル アプリから MTP デバイスにアクセスする
Windows 10 ユニバーサル アプリから MTP デバイス (音楽プレーヤー) にアクセスできません。
デバイスのルート フォルダーは取得できますが、列挙できるのはサブフォルダーのみです。StorageFolder.GetFilesAsync は空のリストを返します。
デバイスの合計メモリと空きメモリを見つける方法も見つかりません。
android - Android と PC が接続されていない
私はこの問題を解決しようと数か月間苦労しましたが、成功しませんでした。
ハッキングしたり、別のドライバーを使用したり (手動でインストールした場合のみ) せずに、Samsung の携帯電話の横にある PC (マスストレージまたは ADB) に Android デバイスを接続することはできません。
Sony、Nexus、HTC、その他の中国の Android 携帯電話でこの問題が発生しています。
電話に付属しているデフォルトの USB ドライバー (ADB インターフェイス) を使用しようとしましたが、デバイスと互換性のあるドライバーが認識されないため、Windows でインストールできません。ドライバーの .inf ファイルにハードウェア ID を挿入して、ドライバーをハッキングしました。この方法ですべての電話がインストールされますが、この方法では一部の電話が機能し、他の電話は機能しません (ADB)。大容量ストレージ モードでは、すべての電話をポータブル デバイス / MTP デバイスとしてインストールすることができました。この方法では、ADB にアクセスせずにフォルダーを参照できます。
この問題は別の PC では再現できません。電話を初めて接続すると、何の努力もせずにマイ コンピュータに大容量記憶装置として表示されます。デフォルトのドライバーを指定すると、電話は ADB 経由でも悪用される可能性があります。
必要に応じて、1 日に何十回もドライバーをインストール/アンインストールするのは、うまくいくかどうかわからないまま、非常にイライラします。
どうすればこれを解決できるかヒントがあれば教えてください。よろしくお願いします。どうもありがとう!
.net - Android デバイス (レスポンダー) からカスタム MTP イベントを生成し、Windows (イニシエーター) でイベントをキャプチャする方法
私は何をする必要がありますか:
- レスポンダー (Android を実行している Beaglebone Black) からカスタム ベンダー拡張イベントを生成し、イニシエーターでイベント通知を取得します。
私が使用しているもの:
- Initiator - Portabledeviceapilib.dll (COM 相互運用) ライブラリのマネージ ラッパーを使用する Windows 7 上の C# .Net アプリケーション。
- テスト レスポンダー 1 - Microsoft による MTP シミュレーター 3.0
- Test Responder 2 - Android Jelly Bean 4.1.1 を実行する Beaglebone Black
私がこれまで取り組んできたこと:
イニシエータとレスポンダの間でエンド ツー エンドの通信が正常に行われています。MTP コマンドを送信し、MTP 応答を取得できます。また、レスポンダーから標準イベント通知を正常に取得できます。
問題
イニシエーターがイベントを正常に起動して受信した場合でも、Android からの USB パケットに MTP イベント コードが表示されません。Android の標準イベント コードをカスタム イベント コードに変更しても、適切なイベント メッセージが表示されます (詳細は後述)。
これまでに行ったこと
レスポンダー側で Android ソース コードを参照すると、 /frameworks/av/media/mtp/mtp.hで定義されている MTP イベント コードが見つかりました。
以下は、オブジェクトの追加/削除用に定義されたイベント ID です。
これらのイベント コードは、MTP 仕様で定義されています。
イニシエーター側でイベントをサブスクライブするために、私はDarene Lewisの記事 (こちら) のガイドラインに従っています。ここで定義された定数のイベントの GUID を使用しています。
ファイルがデバイスに追加されるか、デバイスからファイルが削除されると、MTP イベント通知が起動され、イニシエーターは eventID を定数の 1 つにマップする通知を取得します。私が理解しているように、GUID の最初の 4 バイトはイベント ID に対応しています。
以下は、ファイルの追加および削除イベントの GUID です。
私のテストは、デバイスからのファイルの追加/削除で構成されていました。
シミュレーターを使用すると、イニシエーターは 2 つのイベント通知を正常に取得し、上記で定義した正しい WPD イベントにマップされます。また、これらのイベントコードが USB パケットに表示されることを確認しました。
Android デバイスを使用している場合、イニシエーターは 2 つのイベント通知を正常に取得し、上記で定義した正しい WPD イベントにマップします。ただし、USB パケットのどこにもイベント コードが表示されません。
パケットに MTP イベント コードが表示されていないにもかかわらず、COM 相互運用ライブラリがイベントの通知を正常に取得する方法がわかりません。
パケット内のイベント コードを確認できないため、デバイスからイニシエーターへのカスタム イベント コードの送信をテストできません。
上記の Android MTP イベント コードをベンダー拡張イベント コード用に変更し (MTP 仕様で 0xC000 - 0xC7FF と記述されているように)、デバイスの libmtp を更新して何が起こるかを確認する実験を行いました。
イニシエータがイベントを取得しないことを期待していましたが、驚くべきことに、イベント コードを変更した後でも、COM 相互運用ライブラリはイベントを受信し、正しい GUID にマップしました。
要約すると、Android を使用している場合、USB メッセージに MTP イベント コードが表示されませんが、イニシエータは何らかの方法で通知を正常に取得します。MTP Simulator を使用すると、USB メッセージに MTP イベント コードが表示されます。
android - WIN API 経由でプラグ アンド プレイ android デバイスのファイルにアクセスする
説明を簡単にさせてください。USB経由でコンピューターに接続されたAndroidデバイスを検出し、デバイスのメモリにアクセスしてカメラの写真を読み取るための単純なWindowsサービスを作成しています。
WIN API を使用RegisterDeviceNotification()
すると、登録してデバイスの変更 (コンピューターから追加/削除されたデバイス) の通知を受け取ることができます。私の場合、USB デバイスがコンピューターに接続されたときに通知を受け取るように登録します。そのため、ボリューム デバイスが接続されている場合、構造体dbcv_unitmask
から使用してドライブ文字を取得できます。PDEV_BROADCAST_VOLUME
これは、USB ドライブでは非常にうまく機能します。既知のドライブ文字により、USB ドライブにアクセスできます。
しかし、私の場合、Android デバイスは MTP プロトコルを使用して接続し、Windows は接続されている新しい USB デバイスを認識しますが、ドライブ文字を割り当てないようです。そのため、デバイスのメモリにプログラムでアクセスする方法がありません。
WIN API経由でAndroid PNPデバイスにアクセスする方法があれば教えてください。
ありがとう!