Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将tts的输出共享为mp3或wav_Java_Android_Android Studio_Mobile - Fatal编程技术网

Java 如何将tts的输出共享为mp3或wav

Java 如何将tts的输出共享为mp3或wav,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我正在开发一个应用程序,它有一个文本输入字段和两个按钮:完成和共享。您可以在字段中键入任何内容,然后按done,它会将文本转换为语音。然后,如果您按下共享按钮,应用程序将带您访问任何类型的messenger,如WhatsApp或Telegrame等。然后您可以选择WhatsApp上的任何联系人,您可以共享文本到语音“Robot”,说出您在应用程序中输入的文本。这就是我想要实现的。所以我做了文本到语音的部分,并添加了按钮。现在的问题是,当我按share并转到WhatsApp时,它说它不受支持或无效

我正在开发一个应用程序,它有一个文本输入字段和两个按钮:完成和共享。您可以在字段中键入任何内容,然后按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”);
星触觉(意向);
}
} 
我只是想得到关于如何修复无效弹出窗口的帮助