1. 程式人生 > >Android利用有道API播放英文發音

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

定義一個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);