gpt4 book ai didi

android - 是否可以在 Android O 及更高版本中动态调整通知音量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:37 25 4
gpt4 key购买 nike

我完全理解自 Android O 及更高版本以来,没有简单的方法可以通过应用代码自定义通知声音。

这样做的常用方法是调用 Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS

private void showNotificationSoundListPreferenceDialogFragmentCompat(Preference preference) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
intent.putExtra(Settings.EXTRA_CHANNEL_ID, com.yocto.wenote.reminder.Utils.createNotificationChannel());
try {
startActivity(intent);
} catch (android.content.ActivityNotFoundException e) {
Log.e(TAG, "", e);
trackEvent("showNotificationSoundListPreferenceDialogFragmentCompat", "fatal", e.getMessage());
}
}
}

看起来像下面

enter image description here

但是,我注意到市场上的一些应用程序确实提供了动态调整通知音量的方法。

enter image description here

请问有什么方法可以实现?

最佳答案

这只是一种 hack,一种让它这样做的方法,它将实现您所需的行为。在我的应用程序中,目标是 API 26;我已经实现了声音和振动定制,但手动进行。

NotificationCompat.Builder notification = new NotificationCompat.Builder(this, "Channel1");

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

// Vibrations

Vibrator vib = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(VibrationEffect.createWaveform(new long[] {200,300,500,100,100}, 1));

//Sound

Intent soundIntent = new Intent(this, PlaySound.class);
serviceIntent.setAction("ACTION_START_PLAYBACK");
serviceIntent.putExtra("UriSound", soundUri.toString());
context.startForegroundService(soundIntent);

// if notification is outted, just delete notification; thus delete intent

Intent outNotification = new Intent(context, PlaySound.class);
deleteIntent.setAction("ACTION_STOP_PLAYBACK");
PendingIntent pendingOutNotification =
PendingIntent.getService(this, 0, outNotification, 0);
builder.setDeleteIntent(pendingOutNotification);

} else {

builder.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
builder.setSound(uri);

}

notificationManager.notify(0, builder.build());

在您的 PlaySound.class extend service 中,在 media player 上播放您的声音,并根据 intent 控制音量或特定声音> 那个特定的 channel...

根据用户从 slider 输入的音量或 uri 定位,然后通过 intent 发送或使用 sharedpreference 将其保存在键值对中。

关于android - 是否可以在 Android O 及更高版本中动态调整通知音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53910653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com