Setzen Sie eine Sounddatei als Klingelton und Benachrichtigung programmgesteuert in Android

Ich habe zwei Schaltflächen in meiner App. Eine zum Einstellen einer Audiodatei als Klingelton und eine andere als Benachrichtigung. Ich kann die Audiodatei als Klingelton festlegen, aber wenn ich versuche, sie als Benachrichtigung festzulegen, wird der zuvor hinzugefügte Klingelton entfernt. Audiodatei wird nur als Benachrichtigung angezeigt. Ich möchte eine Audiodatei sowohl als Klingelton als auch als Benachrichtigung über separate Schaltflächen einrichten.

Code für Klingelton:

File k = new File(baseDir,fileName);
ContentValues values = new ContentValues();

values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "Voicetransform ");  

values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
        .getAbsolutePath());
context.getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
        + k.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);

try {
    RingtoneManager.setActualDefaultRingtoneUri(
            context, RingtoneManager.TYPE_RINGTONE,
            newUri);
} catch (Throwable t) {

}

Code für Benachrichtigung:

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "Voicetransform1");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
    .getAbsolutePath());
context.getContentResolver().delete(
    uri,
    MediaStore.MediaColumns.DATA + "=\""
        + k.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);

try {
    RingtoneManager.setActualDefaultRingtoneUri(
        context, RingtoneManager.TYPE_NOTIFICATION,newUri);
} catch (Throwable t) {

}

File k = new File(baseDir,fileName);

Antworten auf die Frage(4)

Ihre Antwort auf die Frage