android TextToSpeech 静音时仍然播放声音

通过简单的设置,可以实现即使系统静音,也可以让textToSpeech发声。

代码如下:
ts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
                        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                        @Override
                        public void onInit(int status) {
                            if (status == TextToSpeech.SUCCESS) {
                                ts.setPitch(2f);//方法用来控制音调
                                ts.setSpeechRate(1.4f);//用来控制语速
//主要是以下三行起到作用了
                                AudioAttributes.Builder audioAttributes = new AudioAttributes.Builder().
                                        setUsage(AudioAttributes.USAGE_ALARM).
                                        setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).
                                        setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED);
                                ts.setAudioAttributes(audioAttributes.build());
//主要是以上代码,设置应用场景为闹钟。
                                //判断是否支持下面两种语言
                                int result1 = ts.setLanguage(Locale.US);
                                int result2 = ts.setLanguage(Locale.SIMPLIFIED_CHINESE);
                                boolean a = (result1 == TextToSpeech.LANG_MISSING_DATA || result1 == TextToSpeech.LANG_NOT_SUPPORTED);
                                boolean b = (result2 == TextToSpeech.LANG_MISSING_DATA || result2 == TextToSpeech.LANG_NOT_SUPPORTED);
                                boolean reported = false;
                                if (min == 0) {
                                    ts.speak("现在时刻," + hour + "点整", TextToSpeech.QUEUE_FLUSH, null);
                                    reported = true;
                                } else if (min == 30) {
                                    ts.speak("现在时刻," + hour + "点三十分", TextToSpeech.QUEUE_FLUSH, null);
                                    reported = true;
                                } else if (min % 10 == 0) {
                                    ts.speak("" + hour + "点" + min + "分", TextToSpeech.QUEUE_ADD, null);
                                    reported = true;
                                }
                                if(reported){
                                    PendingIntent p = PendingIntent.getActivity(myService.this, 0, new Intent(myService.this, PandoraEntryActivity.class), 0);
                                    NotificationManager mNotifyMgr =  (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                                    Notification notification = new NotificationCompat.Builder(myService.this, NOTIFICATION_CHANNEL_ID)
                                            .setWhen(System.currentTimeMillis())
                                            .setSmallIcon(R.drawable.icon)
                                            .setContentTitle("整点半点报正在运行")
                                            .setContentText(hour + ":" + min)
                                            .setContentIntent(p)
                                            //在build()方法之前还可以添加其他方法
                                            .build();
                                    mNotifyMgr.notify(1, notification);
                                }
                            } else {
                                Toast.makeText(myService.this, "数据丢失或不支持", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });

代码摘自我写的一个整点半点报时器。之前没有这个静音报时功能。后来感觉不方便。加上去了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值