安卓开发入门基础之TextToSpeech朗读+动态切换

前言

  • 博主刚学习这个的时候,刚巧那段时间流行青你2的reader,当时还没有开始写CSDN博客
  • 淡黄的长裙,蓬松的头发 余音绕梁且三日未散去,怎么感觉有声音了。。。
  • 突发奇想,闲来无事,脑子一抽就做了这个幼稚APP

xml布局构思

  • 总体是一个垂直的线性布局,老设计套路了
  • 往里面是3个水平(横向)线性布局
  • 第一个水平(横向)线性布局内放一个textview文本和editview输入框,且输入框有相应提示
  • 第二第三个水平(横向)线性布局分别放2个按钮,做工粗糙

设计效果图

在这里插入图片描述

Mainactivity.java

  • 博主这边用的是荣耀10真机运行,手机内自带科大讯飞语音库所以可以读中文,而使用安卓AVD(Android virtual devices)的话默认只能读英语,必须setLanguage(Locale.US),比较闲的童鞋可以去往AVD内装科大讯飞语音库,步骤比较多,博主放弃了哈哈
  • 另外我这边的按钮定义顺序没改,有点奇怪,但是功能是对应齐全的,而且代码基本上没什么大错
public class MainActivity extends AppCompatActivity {

    private MediaPlayer mediaPlayer;
    private EditText edit1;
    private Button btn;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private Button btn5;
    private TextToSpeech textToSpeech;
    private LinearLayout left;

    String s= "就当是一场梦,醒了很久还是很感动,还是很想被你,保护我心里的惨痛,喜欢我,很辛苦,其实我都清楚,放心,这世界很大,但我记得你的叮嘱!淡黄的长裙,蓬松的头发,牵着我的手看最新展出的油画,无人的街道,在空荡的家里,就只剩我一个人,开狂欢的party";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit1 = (EditText) findViewById(R.id.edit);
        btn = (Button) findViewById(R.id.btn);
        btn2 = (Button) findViewById(R.id.btn2);

        textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                textToSpeech.setLanguage(Locale.CHINESE);

            }
        });

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textToSpeech.speak(edit1.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.melody);	//加了个伴奏,要做更有灵魂的reader
                mediaPlayer.start();
                textToSpeech.speak(s,TextToSpeech.QUEUE_FLUSH,null);
                //调用Speak()方法时,会中断当前实例正在运行的任务(也可以理解为清除当前语音任务,转而执行新的列队任务)
            }
        });

        btn3 = (Button) findViewById(R.id.btn3);
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textToSpeech.stop();
                try {
                    if (mediaPlayer.isPlaying()){
                        mediaPlayer.stop();
                    }
                }catch (Exception ignore){

                }
            }
        });

        btn4 = (Button) findViewById(R.id.btn4);
        left = (LinearLayout) findViewById(R.id.left);
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //动态切换界面的相关实现
                left.setLayoutParams(new LinearLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth()/3,getWindowManager().getDefaultDisplay().getHeight()));
            }
        });
        btn5 = (Button) findViewById(R.id.btn5);
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText("");
            }
        });

    }
}

实现效果图

  • 恐怖的2020发生了如此多奇奇怪怪的事

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【无痕干货营】

如果帮助到您,欢迎打赏一下我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值