問題タブ [sd-card]
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 - Web からダウンロードした画像の保存
Web から読み込んだ画像を保存する必要があるかどうか (およびその方法) に関する質問がありました。Android アプリから Web サービスを呼び出しているとします。この Web サービスでは、Web 上の画像の URL を取得します。この画像をダウンロードして、ListView のリスト項目の左側に表示します。私の質問は、画像を保存するためにどの方法を使用すればよいですか? するべきか:
- SDCard に保存し、ListView の作成時に (後続の要求で) 存在するかどうかを確認し、必要に応じて再ダウンロードします (画像が変更された場合に時々更新しながら)。
- Context.getCacheDir() を使用してキャッシュに保存しますが、画像がキャッシュに残っていることに頼ることができないため、より頻繁に再ダウンロードを余儀なくされる可能性があります。
- 常にダウンロードし、イメージを保存しないでください。
画像ファイル自体はかなり小さいですが、これらの小さな画像を何十枚もダウンロード/保存するユーザーもいると思います。どの方法が最も効果的ですか?また、推奨される方法は何ですか?
副次的な質問として、最初に ListView にすべての画像をロードする (そして、しばらくの間 UI をロックする可能性がある) か、非同期にロードしてその間にプレースホルダー グラフィックを表示する必要がありますか (これはもう少し「醜い」かもしれません)。ここの基準は?
android - AndroidでSDカードのマウントを聞くにはどうすればよいですか?
SDカードを使ったプログラムを持っているので、できればリスナーを登録してカードの状態が変わったら知らせたいです。私はEnvironmentクラスとそのメソッドを知っていますが、常に状態をポーリングしたくはありません。誰かがsdカードを自分のコンピュータにマウントしたため、実行時にプログラムを強制終了したくありません。
embedded - SPI の問題で SD カードを初期化する
Stack Overflow question Initialization of a microSD card using an SPI interfaceを見てきましたが、私の問題 (つまり、まだ試していないこと) に一致する回答はありませんでした。
マイクロコントローラーの SPI インターフェイス (具体的にはHC908 )を介して SD カードにアクセスしようとしている同様の問題があります。Physical Layer Simplified Specification v2.00 のフローチャートに従ってみましたが、Transcend 1 GB & 2 GB および AE&C 1 GB カードで正しく初期化されるようです。しかし、カメラで使用した古いカードの隠し場所から、他の 3 枚のランダムなカードで問題が発生しています。
私のコードはすべて HC908 アセンブラーです。SPI クロック ラインを調べたところ、初期化中に約 350 kHz で実行されました (100 ~ 400 kHz のウィンドウ内に収まる私の低い MCU クロック速度で HC908 が提供する唯一の速度乗数)。
初期化ルーチンを完了していない 3 つのカードの結果を次に示します (すべて、コードやタイミング パラメーターを変更せずに連続して実行されます)。
不正コマンドフラグが立っていませんか?そのフラグをクリアするためにCMD8の後に何かをする必要がありますか?
なぜ OCR はすべて F なのですか? まったく適切ではないようです。また、ACMD41 と CMD1 が不正なコマンドに応答するのはなぜですか? 不正なコマンド応答があっても、カードが CMD55 の後に有効な ACMD を待機しているため、CMD1 が失敗していますか?
あのカードの何が悪いんだ?
同期している場合もあれば、そうでない場合もあります。(上記のパターンは繰り返し可能です。) 私はこれを調査しましたが、MOSI/MISO 転送間で異常なクロック サイクルが発生することはありません。
.net - SDカードから生のバイトを読み取る方法は?
Windows PCで、USBカードリーダーを介して接続されたSDカードから生のバイトを読み取る方法はありますか?SDカードは、ファイルシステムをまったく使用せずに組み込みシステムから書き込まれるため、標準のファイルアクセスルーチンを使用できません。これはunixddユーティリティの機能と似ていますが、これを.NETアプリケーションに統合する必要があります。
android - Android の配列に .txt ファイル名を保存する
.txt
特定のディレクトリからのファイル名のみを保存したいと思います (たとえば: /sdcard/docs/
) をString
配列に格納します。
例:には、、 、、 の/sdcard/docs/
5 つのファイルがあります 。内容を含む配列を取得したい:foo.txt
bar.jpg
foofoo.txt
loool.png
foobar.txt
"foo.txt", "foofoo.txt", "foobar.txt"
どうすればできますか?
android - 適切なサイズでAndroidのビットマップをデコードする
を使用してSDカードからビットマップをデコードしBitmapFactory.decodeFile
ます。ビットマップがアプリケーションが必要とするものやヒープが許可するものよりも大きい場合があるためBitmapFactory.Options.inSampleSize
、サブサンプリングされた(小さい)ビットマップを要求するために使用します。
問題は、プラットフォームがinSampleSizeの正確な値を強制しないことであり、ビットマップが小さすぎるか、使用可能なメモリに対して大きすぎる場合があります。
http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSizeから:
注:デコーダーはこの要求を実行しようとしますが、結果のビットマップは、要求されたものと正確に異なる次元を持つ場合があります。また、2の累乗は、多くの場合、デコーダーが尊重する方が高速で簡単です。
SDカードからビットマップをデコードして、デコードに必要なメモリをできるだけ少なくしながら、必要な正確なサイズのビットマップを取得するにはどうすればよいですか?
編集:
現在のソースコード:
java - SD カードのディレクトリ内のファイル数に制限はありますか?
Android デバイス用に作成されたプロジェクトがあります。毎日大量のファイルが生成されます。これらはすべてテキストファイルと画像です。アプリはデータベースを使用してこれらのファイルを参照します。
アプリは、少し使用した後 (おそらく数日後) にこれらのファイルを消去することになっていますが、このプロセスが機能している場合と機能していない場合があります。これはこの質問の主題ではありません。
歴史的な事故のため、ファイルの編成はやや単純です。すべてが同じディレクトリにあります。MediaScanner がインデックスを作成するのを防ぐための.hidden
ゼロ バイト ファイルを含むディレクトリ。.nomedia
今日、報告されたエラーが表示されます。
SDカードに関しては、十分なストレージが残っているようですが、数えています
いくつかのファイルを削除したことで、今日のファイル作成を進めることができたようです。
残念ながら、touch
コマンドラインでエラーを再現するために新しいファイルを作成しようとはしませんでした。また、一握りではなく数百のファイルを削除しました。
ただし、私の質問は次のとおりです。
- ディレクトリ内のファイルサイズまたはファイル数に厳しい制限はありますか?
- 私はここで正しい軌道に乗っていますか?
注記: SD カードは現状のままです。つまり、フォーマットしていないので、FAT-* フォーマットであると推測されます。
FAT-32 フォーマットには、2 GB のファイル サイズ (私が扱っているファイル サイズをはるかに超える) のハード リミットと、ルート ディレクトリ内のファイル数の制限があります。ルートディレクトリにファイルを書き込んでいるわけではありません。
android - AndroidエミュレーターにSDカードを(再)マウントする
エミュレータでは、設定から SD カードをアンマウントできます。
その後、OSにマウントしてから、通常どおりアンマウントできます。
エミュレーターに再マウントする方法を理解できませんでした(再起動せずに)。
ヒント:
adb
コマンドremount
は無関係です:それは約です/system
- コマンドは関係あり
emulator
ません: エミュレーターを起動するだけです - もちろん、SDカードを2か所にマウントすると、すべてが台無しになります(試しました)
もっと:
mount
以下を出力します。/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
上記と同じオプションを使用して、シェルをアンマウントした後にシェルから再度マウントしようとすると、segfault が発生します
- の二重スラッシュの理由がわかりません。
block//vold
単なるタイプミスだと思います
android - AndroidのSDカードにゲームアセットをダウンロードする
アプリのサイズをできるだけ小さくするために、いくつかのアセットをSDカードにダウンロードする必要があるAndroidゲームを開発しています。非圧縮のzipファイルを使用してすべてのアセットをバンドルすることを考えていました。
クライアントからの要件は、これらの資産を可能な限り保護することです。apkの一部であることは十分な保護と見なされますが、これを行うと、apkのサイズは非常に大きくなります。SDカードにzipバンドルを入れるだけで、誰でも解凍してその内容を調べることができます。
恐ろしいDRMに反論せずにこれを行う簡単な方法はありますか?
明らかに、誰かが本当にAndroidゲームのリソースをチェックしたいのであれば、彼らはそうすることができます。これを非常に簡単にすることを避けるための簡単な解決策を探しています。
embedded - SPI を使用した SD カードの初期化
MMC/SD カードに関する多くの情報を見て、これを読み取るためのライブラリを作成しようとしました ( Procyon AVRlibを変更します)。
しかし、ここでいくつか問題があります。私は元のコードを変更せず、ここで試しました。私の問題は、SD カードの初期化に関するものです。256 MB と 1 GB の 2 つがあります。
CMD0、CMD55、ACMD41、CMD1 の順に init コマンドを送信します。
しかし、256 MB の SD カードは、各コマンドに対して 0x01 応答しか返しません。CMD1 を何度も送信すると、256 MB の SD カードは常に 0x01 のみを返し、0x00 を返すことはありません。
1 GB SD はもっとクレイジーです... CMD0 は 0x01 で戻ります。いいのですが、CMD55 コマンドは 0x05 で応答します。それ以外の場合は 0xC1 で応答し、次のインタラクションで 0x5F とともに 0xF0 で応答することもあります...
インターネットの周りには情報と例がありますが、少し混乱しています。ここで私のプロジェクトでは、1 GB カードを使用する必要があり、SD アダプター付きの microSD カードを使用しようとしています (これは問題ではないと思います)。
この問題を解決するにはどうすればよいですか?
PS: 私の問題は Stack Overflow の質問Initializing SD card in SPI issuesの問題に似ていますが、解決策は私の問題を解決しませんでした。1 GB SD カードは 0x01 しか返さない... :cry: