android调用听听中心朗读

听听中心目前已经关闭了申请哦。

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);
}

}

0%