3

私のアプリでは、2 秒間のサウンドを録音してユーザーに再生したいと考えています。これまでに見つけたすべての例では、再生用のオーディオ データをファイルまたは URL から取得する必要があります。

MediaPlayer クラスと SoundPool クラスはどちらも、ファイル、ファイル記述子、リソース ID、または URL のみを入力として受け入れ、たとえばバイト配列だけではありません。

内部ストレージではなくSDカードにのみファイルを書き込むことができるため(そうですか?)、アプリはSDカードがマウントされ、書き込み可能である必要があります。ただし、SD カードが存在しない場合でも、私のアプリは動作するはずです。

これを達成する方法はありますか?ありがとう

4

2 に答える 2

3

はい、アプリは内部ストレージ (インストールされている場所) に書き込むことができます。すべてのインストール済みアプリには、その内部ファイルを書き込むための Data フォルダーが提供されます。また、キャッシュストレージも提供されます。

これらの方法で、Context次のディレクトリを取得できます。

  • getCacheDir(): ファイル システム上のアプリケーション固有のキャッシュ ディレクトリへの絶対パスを返します (注: ストレージが不足している場合、システムはキャッシュを削除する場合があります) 。

  • getDir(String name, int mode): アプリケーションが独自のカスタム データ ファイルを配置できる新しいディレクトリを取得し、必要に応じて作成します。

外部ストレージの方法もありますが、getExternalCacheDir()外部ストレージが常に存在するとは限らないため、信頼できません。

また、アプリの内部データ ディレクトリにファイルを書き込むだけの場合は、非常に簡単な方法があります。

openFileOutput (String name, int mode)

于 2012-12-07T17:01:04.150 に答える
0

「getApplicationContext().getFilesDir().getAbsolutePath()」を使用して、アプリがインストールされているディレクトリのパスを取得できます。1 つの制限は、'getFilesDir()' は、openFileOutput(String, int) で作成されたファイルが格納されるファイル システム上のディレクトリへのパスを提供することです。

于 2012-12-10T13:01:18.593 に答える