Fork me on GitHub

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 })

 

posted @ 2023-04-21 20:51  HelloLLLLL  阅读(302)  评论(0编辑  收藏  举报