uniapp android端和ios端铃声静音,但是还是会震动
uniapp 使用了html5plus的api,可以实现调用原生的api功能,htm5plus官方api文档:
我主要是使用了native.js 中android端部分实现了铃声静音,但不会让媒体音量也静音。要求就是这样。
可以先在网络上搜索原生android是怎么让铃声静音的,然后在用native.js的语法改造。
如果要控制其他类型的音量,网络搜android 铃声设置,有很多代码。
最终达到了我的目的。下面放代码:
var pf = uni.getSystemInfoSync().platform; if (pf == "android") { let AudioManager = plus.android.importClass('android.media.AudioManager'); let main = plus.android.runtimeMainActivity(); let Context = plus.android.importClass('android.content.Context'); this.audioManager = main.getSystemService(Context.AUDIO_SERVICE); //let audioManager = if (this.audioManager == null) { return; } console.log(AudioManager.STREAM_RING); this.audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI); }
给不知道的人一点线索。ios端的代码,只能把铃声变小,无法静音。如下:
console.log("ios");
let AVSystemController = plus.ios.importClass("AVSystemController")
if (AVSystemController == null)
{
console.log("AVSystemController is null");
return;
}
var ac2 = AVSystemController.sharedAVSystemController();
if (ac2 == null)
{
console.log("ac2 is null");
return;
}
//ac2.setVolumeTo(0,"Ringtone");
var result = plus.ios.invoke(ac2, "setVolumeTo:forCategory:", 0.0, "Ringtone");
console.log("setVolumeTo", result);// 以上,打印true表示成功。
//下面是补救措施,未实验,因为到这iphone13就打印true,及执行成功了。
if (this.common.isNull(result))
{
console.log("plus.device.setVolume(0.2);");
plus.device.setVolume(0.2);
let MPMusicPlayerController = plus.ios.importClass("MPMusicPlayerController");
if (AVSystemController == null)
{
console.log("MPMusicPlayerController is null");
return;
}
var media = MPMusicPlayerController.applicationMusicPlayer();
if (media == null)
{
console.log("media is null");
return;
}
var result = plus.ios.invoke(media, "setVolume:", 0.7, );
console.log("result", result);
}
uni.showToast(
{
title: '已为您看起免打扰模式',
duration: 1000,
icon: 'none',
mask: false
})

浙公网安备 33010602011771号