Java 如何将tts的输出共享为mp3或wav
我正在开发一个应用程序,它有一个文本输入字段和两个按钮:完成和共享。您可以在字段中键入任何内容,然后按done,它会将文本转换为语音。然后,如果您按下共享按钮,应用程序将带您访问任何类型的messenger,如WhatsApp或Telegrame等。然后您可以选择WhatsApp上的任何联系人,您可以共享文本到语音“Robot”,说出您在应用程序中输入的文本。这就是我想要实现的。所以我做了文本到语音的部分,并添加了按钮。现在的问题是,当我按share并转到WhatsApp时,它说它不受支持或无效 这是我的密码 主要活动Java 如何将tts的输出共享为mp3或wav,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我正在开发一个应用程序,它有一个文本输入字段和两个按钮:完成和共享。您可以在字段中键入任何内容,然后按done,它会将文本转换为语音。然后,如果您按下共享按钮,应用程序将带您访问任何类型的messenger,如WhatsApp或Telegrame等。然后您可以选择WhatsApp上的任何联系人,您可以共享文本到语音“Robot”,说出您在应用程序中输入的文本。这就是我想要实现的。所以我做了文本到语音的部分,并添加了按钮。现在的问题是,当我按share并转到WhatsApp时,它说它不受支持或无效
package com.example.texttospeech;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Locale;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
EditText etInput;
Button btDone, btClear, btShare;
TextToSpeech textToSpeech;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etInput = findViewById(R.id.et_input);
btDone = findViewById(R.id.bt_done);
btShare = findViewById(R.id.btn_share);
textToSpeech = new TextToSpeech(getApplicationContext()
, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
if (i == TextToSpeech.SUCCESS) {
int lang = textToSpeech.setLanguage(Locale.ENGLISH);
}
}
});
btDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = etInput.getText().toString();
int speech = textToSpeech.speak(s, TextToSpeech.QUEUE_FLUSH, null);
shareAudio();
}
});
btShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void shareAudio()
{
HashMap<String, String> myHashRender = new HashMap();
String Text = "" + etInput.getText().toString();
String destFileName = "/sdcard/myAppCache/wakeUp.wav";
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, Text);
textToSpeech.synthesizeToFile(Text, myHashRender, destFileName);
Bundle bundle = new Bundle();
Intent intent = new Intent( Intent.ACTION_SEND );
intent.setType("audio/wav");
startActivity( intent );
}
}
package com.example.texttospeech;
导入androidx.appcompat.app.appcompat活动;
导入android.content.Intent;
导入android.os.Bundle;
导入android.speech.tts.TextToSpeech;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
导入java.util.HashMap;
导入java.util.Locale;
导入java.util.concurrent.Delayed;
导入java.util.concurrent.TimeUnit;
公共类MainActivity扩展了AppCompatActivity{
编辑文本输出;
按钮btDone、btClear、btShare;
texttospeechtexttospeech;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etInput=findViewById(R.id.et_输入);
btDone=findviewbyd(R.id.bt_done);
btShare=findviewbyd(R.id.btn_share);
textToSpeech=新的textToSpeech(getApplicationContext())
,新的TextToSpeech.OnInitListener(){
@凌驾
公共无效onInit(int i){
if(i==TextToSpeech.SUCCESS){
int lang=textToSpeech.setLanguage(Locale.ENGLISH);
}
}
});
btDone.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串s=etInput.getText().toString();
int speech=textToSpeech.speak(s,textToSpeech.QUEUE\u FLUSH,null);
共享音频();
}
});
btShare.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
}
私有void shareAudio()
{
HashMap myHashRender=新建HashMap();
字符串Text=”“+etInput.getText().toString();
字符串destFileName=“/sdcard/myAppCache/wakeUp.wav”;
myHashRender.put(TextToSpeech.Engine.KEY\u PARAM\u outrance\u ID,Text);
textToSpeech.synthezetofile(Text、myHashRender、destFileName);
Bundle=新Bundle();
意图=新的意图(Intent.ACTION\u SEND);
intent.setType(“音频/wav”);
星触觉(意向);
}
}
我只是想得到关于如何修复无效弹出窗口的帮助