Android利用有道API播放英文发音

来源:互联网 发布:几岁能开淘宝店铺 编辑:程序博客网 时间:2024/06/09 18:13

定义一个Service
例如AudioService 继承自android.app.Service

AudioService.java

package com.outsider.service;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.net.Uri;import android.os.IBinder;public class AudioService extends Service {    private MediaPlayer mp;    private String query;    @Override    public void onCreate() {        System.out.println("初始化音乐资源  ");        super.onCreate();    }    @Override    public void onStart(Intent intent, int startId) {        if (query != null && !query.equals(intent.getStringExtra("query")) && mp != null) {            mp.start();        } else {            String query = intent.getStringExtra("query");            // System.out.println("http://dict.youdao.com/dictvoice?audio=" + query);            Uri location = Uri.parse("http://dict.youdao.com/dictvoice?audio=" + query);            mp = MediaPlayer.create(this, location);            // System.out.println("音乐开始播放");            mp.start();            // 音乐播放完毕的事件处理            mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {                public void onCompletion(MediaPlayer mp) {                    // 不循环播放                    try {                        // mp.start();                        System.out.println("stopped");                    } catch (IllegalStateException e) {                        e.printStackTrace();                    }                }            });            // 播放音乐时发生错误的事件处理            mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {                public boolean onError(MediaPlayer mp, int what, int extra) {                    // 释放资源                    try {                        mp.release();                    } catch (Exception e) {                        e.printStackTrace();                    }                    return false;                }            });        }        // super.onStart(intent, startId);    }    @Override    public void onDestroy() {        // 服务停止时停止播放音乐并释放资源        mp.stop();        mp.release();        super.onDestroy();    }    @Override    public IBinder onBind(Intent intent) {        return null;    }}

如何启动一个Service

Intent intent = new Intent(MainActivity.this, AudioService.class);intent.putExtra("query", english.getText());startService(intent);
0 0