Android利用有道API播放英文發音
阿新 • • 發佈:2019-01-22
定義一個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);