私は、アプリのライフサイクルの特定の時点でいくつかのサウンドを再生するアプリを持っています。私はユーザーがこれらのサウンドをカスタマイズできるようにしたい(現在はres/rawディレクトリにあるmp3ファイルです)。私はRingtonePreferenceを見ていますが、表示された値に新しいサウンドを追加してアプリケーションで使用する方法が明確ではありません。誰かが私を正しい方向に向けることができれば、本当に感謝しています。アンドロイドは、アプリケーション内でカスタムサウンドエフェクトを選択する機能を追加しました
ありがとうございました!
EDIT:
一つの方法は、メディアストアにファイルを追加するためのようです。以下に示すコードのようなもの。これはアンドロイドマニフェストファイルの中であなたが "android.permission.WRITE_SETTINGS"というアクセス許可を使用しなければならないので、今やちょっと残酷に見えます。理想的には、mp3リソースをメディアストアに書き込まずにオプションとして追加するだけです。
ContentValues content = new ContentValues();
InputStream raw = getResources()
.openRawResource(R.raw.file_name);
File f = new File("android.resource://" + getPackageName() + "/"
+ R.raw.clock_ticking);
content.put(MediaStore.MediaColumns.DATA, f.getAbsolutePath());
content.put(MediaStore.MediaColumns.TITLE, "TITLE");
content.put(MediaStore.MediaColumns.SIZE, 215454);
content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
content.put(MediaStore.Audio.Media.ARTIST, "artist");
content.put(MediaStore.Audio.Media.DURATION, 230);
content.put(MediaStore.Audio.Media.IS_RINGTONE, false);
content.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
content.put(MediaStore.Audio.Media.IS_ALARM, false);
content.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(f
.getAbsolutePath());
Uri newUri = getContentResolver().insert(uri, content);
EDIT 2: もう一つの方法は、使用リストの好みのようです。リストの設定は機能しますが、選択が変更されたときに手動で「再生」する必要があります。それがうまくいくかどうか私に見てみましょう、私は戻って報告するでしょう。
ありがとうベーオウルフ(OnPreferenceChangeListenerについては、以下の擬似コードを参照) - 私はこれのために、ファイルエクスプローラを作成するよりもよりよい解決策があるかもしれないと思います。 – serverman
私の編集を見てください.1つのディレクトリに制限するとはるかに簡単になりますし、何らかの許可は必要ありません。 'WRITE_SETTINGS'は多くの人に何が使われるのだろうかと思うでしょう:) –
Thanx Beowulf。 WRITE_SETTINGSはここでは使用しないでください。私は、生のファイルから音のドロップダウンリストを作成する簡単な方法があるはずだと思います。それは理想的な解決策になります – serverman