問題タブ [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.

0 投票する
1 に答える
5847 参照

c# - .Net MTP / PTP ラッパー?

カメラのファイルを扱う趣味のプロジェクトを書いています。以前、カメラと FolderBrowserDialog に問題が見つかりました。

私が信じているのは、カメラが MTP または PTP (Picture Transfer Protocol ではなくピアツーピア) を使用していることです。

カメラとのインターフェースをよりシームレスにするために、PTP または MTP を使用してカメラにアクセスしたいと考えています。.Net の人々が推奨できる MTP / PTP ラッパーはありますか? 可能であれば、独自のコードを作成したり、アンマネージ コードに手を出したりすることは避けたいと思っています。

0 投票する
2 に答える
1988 参照

android - AndroidタブレットでMTP接続をフラッシュしますか?

SamsungGalaxyAndroidタブレットをUSBケーブルでWindows7を実行しているコンピューターに接続します。MTPを使用して接続します。

  • ステップ1.Windowsエクスプローラーを介してWindows7からタブレットにSQLiteデータベースをコピーします。
  • 手順2.タブレットで開き(android_metadataテーブルが追加されます)、閉じます。
  • ステップ3.SQLiteデータベースをWindowsにコピーして戻します。
  • ステップ4.sqlite3.exeを使用して確認します。壊れています。

今度は別のテスト。

  • ステップ1.Windowsエクスプローラーを介してWindows7からタブレットにSQLiteデータベースをコピーします
  • 手順2.USBケーブルを取り外してから再接続します。
  • 手順3.タブレットで開き(android_metadataテーブルが追加されます)、閉じます。
  • ステップ3.SQLiteデータベースをWindowsにコピーして戻します。
  • ステップ4.sqlite3.exeを使用して確認します。破損していません。

興味深いことに、手順2と3を切り替えると、それも機能します。

USBケーブルを外して再接続すると動作するので、どういうわけかMTPキャッシュをフラッシュする必要があると思います。これをどのように達成できますか、またはデバイスをすばやく切断して再接続するために使用できるAPIはありますか?

私の実際のWindowsアプリケーションはWPD(Windows Portable Devices)APIを使用しています。Windowsエクスプローラーを使用してテストしているだけで、Windowsコードに問題がないことを証明しています。フラッシュを実行するためのWPDには何も表示されません。

このエラーは、Android上のSQLiteデータベースが1ページ(またはそれ以上)大きくなると発生するようです。SQLiteのページサイズは512バイトです。SQLiteデータベースのバイナリデータを見ると、何が起こっているのかがわかります。デバイス上でデータベースを1ページ大きくし、データベースをデバイスからコピーし、USBを取り外し、プラグを差し込んでから、もう一度コピーします。2つのファイルを比較すると、usbデータをコピーした後に取得するファイルは、最後に多くのデータがあることを除いて同じです。USBを取り外して再度接続するまで、MTPはファイルが大きいことを理解しないようです。USBを接続したままにすると、最後にファイルをコピーしたときに存在していたバイト数だけがコピーされます。

0 投票する
1 に答える
565 参照

android - AndroidのMtpDeviceクラスを使用して、USBカメラからデバイスに画像をコピーする方法は?

android.mtp パッケージの MtpDevice クラスを使用して、カメラの内容をタブレット (Motorola Xoom、Android 3.2) にコピーしようとしています。私が使用している特定のメソッドはimportFile(int objectHandle, String destPath)ですが、どういうわけか常に失敗します (メソッドは false を返します)。

Environment.getExternalStorageDirectory() を destPath として使用し、以前に解析した objectHandle を使用しています。

どんな情報でも本当に役に立ちます。ありがとう!

0 投票する
0 に答える
444 参照

android - Android ICSMTPは*.mpg形式のビデオファイルのみを同期できますか?

MTPを介してビデオファイルをGalaxyNexusに同期しようとしましたが、同期できるのは* mpg形式のビデオのみであり、他のすべての形式のビデオファイルの同期でエラーが発生しました(C00D123E)。そのエラーコードは、デバイスがビデオ形式をサポートしていないことを示しています。

これは既知の問題ですか?

ありがとう

Xin

0 投票する
2 に答える
561 参照

.net - OpenFileDialog.InitialDirectory を MTP デバイスに設定します

カメラから写真を取得するアプリを作成しており、その InitialDirectory をカメラに設定して OpenFileDialog を開きたいと考えています。

これはうまくいきます:

しかし、これらはしません:

それはMTPデバイスであり、それは「実際のディレクトリ名」ではないためだと思います。これを達成する方法はありますか?

ありがとう

0 投票する
1 に答える
1184 参照

android - Honeycomm 以降の Android バージョンの外部 USB ストレージの変更に注意してください

私は DSLR カメラと Android Honeycomb を実行している Samsung Galaxy Tab を持っています。USB ケーブルを使用してタブレットに接続された DSLR (タブレットでホスト機能を有効にする USB キット経由)。この画像をタブレットにダウンロードしたり、画像から取得したメタ情報を含むトースト通知を表示するなど、何か他のことを行うために、ユーザーがこの外部カメラを使用して写真を撮ったときに通知を受けたいです。

変更を監視できるすべての既存のツール (基礎となるメカニズムのFileObserver使用など)を取得する限り、監視する特定のファイルまたはファイルシステム パスを要求します。2.x 以前の Android バージョンでブロック レイヤー プロトコルがサポートされるまでは、これで十分でした。デバイスを接続すると、デバイスのファイル システムのどこかにマウントされ、このマウントポイントをこれらのツールのウォッチ ポイントとして使用できました。 .inotifyMediaContentProvider

Honeycomb 以来、Google は外部 USB デバイスにアクセスする方法をこれのサブセットとして変更Media Transfer Protocolしました。PTP外部 USB デバイスを Android デバイスに接続すると、そのマウントポイントが表示されません (それらを取得するためのadb shell後続のmountコマンドを使用しています)。さらに、MTP実装では、明らかに高レベルの抽象化として機能し、単なる整数値であるストレージ ID を使用します。これらのストレージIDを実際のパス/マウントポイント/その他に変換する方法があることを望んでいましたが、明らかに存在しないようです。

MediaScanner私のデバイスで既に実行されているAndroid について考えてみると、デバイスからアクセスできるメディア ファイルに変更があった場合に特別なブロードキャストでこの問題を管理できるのではないかと考えたので、既に存在し、通知を受けるIntentのに適したものを探し始めましたが、うまくいきませんでした。 Intents-デバイスが接続されている場合と切断されている場合にのみブロードキャストされるACTION_MEDIA_MOUNTEDとのみが見つかりました。ACTION_MEDIA_REMOVEDつまりMediaScanner、再マウントするまでデバイスの変更に気付かないことを意味します(ストックギャラリーアプリを使用して再確認しました-プラグを抜いてAndroidデバイスにプラグインするまで、カメラに新しく作成された画像は表示されませんまた)。

この外部 SD カードのマウント パスを取得しようとして、API 呼び出しを使用しましたが、カメラのものではなく、Environment.getExternalStorageDirectory()エミュレートされた Galaxy の SD カード パスが生成されます。/mnt/sdcardだから私にとってもうまくいきません。

Timerとして機能する定期的なイベントを開始しただけで、この問題を解決することができましAsyncTaskTimerTask。このタスクは、USB 接続の初期化、デバイスのオープン、デバイス メモリ全体のスキャン、最後に撮影した写真のみの取得、デバイス記述子と USB 接続のクローズを行います。

これらすべてのアクションを毎回実行する必要があることを考慮すると、5 秒または 10 秒ごとなど、かなり頻繁に実行する必要があることを考慮すると、これは最善かつ効率的な方法のようには見えません。それは間違いなくバッテリーをすぐに消耗させ、最後に撮った写真を撮って前回最後に撮った写真と比較するためだけに不必要なシステム I/O を生成します (99% で同じ画像でした)。これを行うため。イベントベースの通知を備えたオブザーバーメカニズムを用意する方がはるかに良いでしょう。

私の質問は、上記の方法ではなく、Honeycom 以降の Android バージョンの外部 USB ストレージの変更について通知を受けるより効率的な方法はありますか?

0 投票する
4 に答える
15072 参照

python - PythonでMTPUSBデバイスにアクセスする方法

PythonでUSBケーブルを介してMTPを使用して、Galaxy Nexus電話の読み取りと書き込みを行うにはどうすればよいですか?私はWindows7コンピューターを使用しています。

0 投票する
1 に答える
618 参照

c++ - 特定の PIDL の IWMDMStorageControl インターフェイスを取得する方法

SHBrowseForFolder() を使用して、MTP デバイス上のフォルダーを選択します。次に、そこから/へファイルをコピーしたい。IWMDMStorageControl インターフェイス (Windows Media Format 11 SDK から) が適しているようですが、SHBrowseForFolder() から返された PIDL を持つオブジェクトを取得するにはどうすればよいですか?

( IWMDMStorageControl インターフェイスの取得について同様の質問をしました: How to get IPortableDeviceContent インターフェイス for given PIDL )

0 投票する
1 に答える
635 参照

c++ - 特定のPIDLのIPortableDeviceContentインターフェイスを取得する方法

SHBrowseForFolder()を使用して、MTPデバイス上のフォルダーを選択します。次に、そこから/にファイルをコピーしたいと思います。IPortableDeviceContentインターフェイス(Windows Portable Devices SDKから)は適切なようですが、SHBrowseForFolder()から返されたPIDLを使用してオブジェクト用に取得するにはどうすればよいですか?

(IWMDMStorageControlインターフェイスの取得について同様の質問をしました: 特定のPIDLのIWMDMStorageControlインターフェイスを取得する方法

0 投票する
2 に答える
2564 参照

android - Androidコードのどこに電話の名前/モデル番号が保存されていますか?どのようにそこに保存されていますか?

私が知りたいのは、Android フォンがMTPとして接続されているときに、自分のコンピューターに表示されるように名前を公開する方法です。mtp /usbドライバーは、フレームワーク層のmtp/usb Java クラスなどの上位層から値を取得すると思います。Android コード自体を使用して、コンピューターに表示される名前を変更したいと考えています。

前もって感謝します。