0

mp3 サウンドファイルをアプリ フォルダに入れ、これをアプリの設定でデフォルトの着信音/通知音として設定することはできますか?

とりあえず、アプリから通知が来たときに鳴る着信音を選択できる設定画面があります。これは機能しますが、デバイスに存在するサウンドしか選択できません。私が欲しいのは、アプリのインストール時に自分の着信音ファイルをデバイスに持ち込むことです。これは可能ですか?たとえば、mp3 を assets フォルダーに保存し、そこに呼び出しますか?

編集:

MyApp.class:

public class MyApp extends Application {

public static SharedPreferences sp;

@Override
public void onCreate() {
    super.onCreate();

    // initialize default settings values if not already done (does not overwrite existing settings)
    PreferenceManager.setDefaultValues(this, R.xml.settings, false);

    sp = PreferenceManager.getDefaultSharedPreferences(this);
}

public static String getRingtone() {
    return sp.getString("ringtone_pref", "DEFAULT_NOTIFICATION_URI");
}

public static boolean getVibrate() {
    return sp.getBoolean("vibrate_pref", true);
}
}

SettingsFragment.class:

public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {

public void SettingFragment() {

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.settings);
}

@Override
public void onResume() {
    super.onResume();
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    getRingtoneTitle();
}

@Override
public void onPause() {
    super.onPause();
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    getRingtoneTitle();
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    updatePreference(key);
}

private void updatePreference(String key) {
    Preference pref = findPreference(key);

    if (pref instanceof RingtonePreference) {
        Uri ringtoneUri = Uri.parse(KitchenHelper.getRingtone());
        Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), ringtoneUri);
        if (ringtone != null) { pref.setSummary(ringtone.getTitle(this.getActivity())); }
    }
}

private void getRingtoneTitle() {
    Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), Uri.parse(KitchenHelper.getRingtone()));
    if (ringtone != null) { findPreference("ringtone_pref").setSummary(ringtone.getTitle(this.getActivity())); }
}
}
4

2 に答える 2

0

通知に使用する特定のサウンドをハードコーディングしたい場合は、このスレッドが役立ちます。

新しいものを含め、通知音のリストから選択できるようにしたい場合は、別の方法が必要になります (他の誰かが手伝ってくれるはずです)。

于 2013-10-26T22:07:26.090 に答える
0

正しいアクセス許可を要求する限り、SD カードに書き込むことができるはずです。

通知 mp3 を保存し/sdcard/media/notifications(存在しない場合は作成します)、新しいメディアを再スキャンすると、通知リストに表示されるはずです。

新しいメディアの再スキャン:

scanFile(Context, filepaths, mimetypes (optional), callback (optional))

http://developer.android.com/reference/android/media/MediaScannerConnection.html#scanFile(android.content.Context、java.lang.String[]、java.lang.String[]、android.media.MediaScannerConnectionを参照してください。 .OnScanCompletedListener)

于 2013-10-26T22:26:27.730 に答える