听听中心目前已经关闭了申请哦。
package your package name here;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.snda.tts.service.ITtsService;
import com.snda.tts.service.SndaTts;
import com.snda.tts.service.TtsTask;
/**
* 调用听听中心读。。
*
* @author Tony Me
* @date 2013/11/25 22:55:00
*/
public class ReadActivity extends BaseActivity {
private ITtsService mServiceBinder = null;
private EditText msg = null;
private Button btn = null;
private String caller = “YOUR PACKAGE NAME.caller”;
// bind
ServiceConnection mSConnection = new ServiceConnection() {
// 重写服务连接上时的回调函数
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 获得绑定器,之后可以用来调用语音接口
mServiceBinder = ITtsService.Stub.asInterface(service);
}
// 重写服务断开时的回调函数
@Override
public void onServiceDisconnected(ComponentName name) {
mServiceBinder = null;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reader);
// 注册广播接收器
// caller跟调用speak(TtsTask)时传的TtsTask.caller必须是一样的string,而且唯一,建议以包名命名
IntentFilter intentFilter = new IntentFilter(caller);
intentFilter.addAction(SndaTts.STATUS\_INIT\_SUCCEEDED);
intentFilter.addAction(SndaTts.STATUS\_INIT\_FAILED);
intentFilter.addAction(SndaTts.STATUS\_SPEAK\_BEGIN);
intentFilter.addAction(SndaTts.STATUS\_SPEAK\_FINISH);
intentFilter.addAction(SndaTts.STATUS\_STOPPED\_BY_PHONE);
intentFilter.addAction(SndaTts.STATUS\_STOPPED\_MANUALLY);
registerReceiver(mBR, intentFilter);
ReadActivity.this.bindService(new Intent(
"com.snda.tts.service.TtsService"), mSConnection,
Context.BIND\_AUTO\_CREATE);
this.msg = (EditText) super.findViewById(R.id.msg);
this.btn = (Button) super.findViewById(R.id.btn);
this.btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MyTask task = new MyTask();
task.execute("tts");
}
});
}
// 定义广播接收器
private BroadcastReceiver mBR = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(caller)) {
Bundle b = intent.getExtras();
String type = b.getString("type");
Long id = b.getLong("id");
if (type.equals(SndaTts.STATUS\_STOPPED\_MANUALLY)) {
// 用户停止了听听中心的播放
} else if (type.equals(SndaTts.STATUS\_STOPPED\_BY_PHONE)) {
// 用户来电停止了听听中心的播放
} else if (type.equals(SndaTts.STATUS\_SPEAK\_BEGIN)) {
// 调用者的任务(id)开始播放
} else if (type.equals(SndaTts.STATUS\_SPEAK\_FINISH)) {
// 调用者的任务(id)播放完毕
Toast.makeText(ReadActivity.this, "播放完了", 1).show();
}
} else if (intent.getAction().equals(SndaTts.STATUS\_INIT\_SUCCEEDED)) {
// 听听中心服务被启动或重启,并且初始化成功
// 这些情况可能包括听听中心安装后第一次被绑定,用户安装、更新听听中心,
// 或听听中心服务被重启等
// 可能需要重新绑定服务
} else if (intent.getAction().equals(SndaTts.STATUS\_INIT\_FAILED)) {
// 听听中心服务被启动或重启,并且初始化失败
}
}
};
class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected void onPostExecute(String result) {
}
protected void onProgressUpdate(Integer values) {
}
protected String doInBackground(String... params) {
// Intent intent = new Intent();
// intent.setClassName("com.snda.tts.service",
// "com.snda.tts.config.TtsConfig");
// startActivity(intent);
int result;
TtsTask task = new TtsTask();
task.content = ReadActivity.this.msg.getText().toString();// "你这个鸟人,看我怎么收拾你,哈哈";
task.caller = caller;
try {
System.out.println(mServiceBinder.activate());
} catch (RemoteException e1) {
e1.printStackTrace();
}
if (mServiceBinder != null) {
try {
result = mServiceBinder.speak(task);
// 处理返回错误
} catch (RemoteException e) {
// 处理异常
e.printStackTrace();
}
}
for (int x = 0; x < 100; x++) {
this.publishProgress(x);
}
return null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
this.unbindService(mSConnection);
}
}