Android 文本到语音转换在棉花糖中无法处理传入呼叫
这段代码在棒棒糖设备上运行得非常完美,但在任何棉花糖设备上都不起作用。我尝试过很多东西,比如: 1) 将流音乐更改为流铃声 2) 将STREAM_音乐更改为STREAM_系统 3) 播放tts的来电铃声被阻断 但这些都不起作用Android 文本到语音转换在棉花糖中无法处理传入呼叫,android,google-text-to-speech,Android,Google Text To Speech,这段代码在棒棒糖设备上运行得非常完美,但在任何棉花糖设备上都不起作用。我尝试过很多东西,比如: 1) 将流音乐更改为流铃声 2) 将STREAM_音乐更改为STREAM_系统 3) 播放tts的来电铃声被阻断 但这些都不起作用 @SuppressWarnings("deprecation") private void ttsUnder20(String text) { HashMap<String,
@SuppressWarnings("deprecation")
private void ttsUnder20(String text) {
HashMap<String, String> map = new HashMap<>();
map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "MessageId");
speech.speak(text, TextToSpeech.QUEUE_FLUSH, map); //speak for API level<21
}
enter code here
@TargetApi(Build.VERSION_CODES.M)
private void ttsGreater21(String text) {
bund.clear();
String utteranceId = this.hashCode() + "";
audio.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
//
// audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
bund.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM,AudioManager.STREAM_MUSIC);
speech.speak(text, TextToSpeech.QUEUE_FLUSH, bund, "");
}
//check for read phone state permission when activity start.
private void checkPermission() {
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.READ_PHONE_STATE)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
// MY_PERMISSIONS_REQUEST_READ_PHONE_STATE is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
}
@SuppressWarnings(“弃用”)
私有void ttsUnder20(字符串文本){
HashMap=newHashMap();
map.put(TextToSpeech.Engine.KEY_参数_话语_ID,“MessageId”);
speech.speak(text,TextToSpeech.QUEUE_FLUSH,map);//为API级别@SuppressWarnings(“弃用”)说话
也许您正在使用的API现在已被弃用?请删除此项。谢谢您的评论。但如果是marshamallow,它将转到ttsGreater21方法。不知道为什么它不说话。您是否要求在清单中录制音频并在使用麦克风时进行运行时权限检查?@AdamGardner假设t我没有使用麦克风。所以程序将处于其他状态。但即使我在运行时提供了READ_PHONE_STATE权限,它也不会在来电时说话。你是说文本到语音在Marshmellow设备上不起作用,这可能是因为应用程序没有检查运行时权限。通常,如果我所做的任何操作都在al上起作用除了Marshmellow,我没有检查运行时权限。