在做极光推送的时候如何能接受推送的内容,并且使用讯飞语音将内容读出.
最近在做极光推送,接收到内容之后将内容用讯飞语音将内容读出来,通过以下代码已经实现了推送过来实现语音播报的功能:
JPushReciever广播,接受极光推过来的消息用:
public class JPushReciever extends BroadcastReceiver {
private boolean flag = true;
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
final String content = (String) bundle.get(JPushInterface.EXTRA_ALERT);
AudioUtils.getInstance().init(context);
AudioUtils.getInstance().speakText(content);
Log.e("sanshao",content);
}catch (Exception e){
Log.e("",e.toString());
}
}
}
AudioUtils工具类实现语音播报用的工具类
public class AudioUtils {
private static AudioUtils audioUtils;
private SpeechSynthesizer mySynthesizer;
private AudioUtils() {
}
/**
* 描述:单例
*/
public static AudioUtils getInstance() {
if (audioUtils == null) {
synchronized (AudioUtils.class) {
if (audioUtils == null) {
audioUtils = new AudioUtils();
}
}
}
return audioUtils;
}
private InitListener myInitListener = new InitListener() {
@Override
public void onInit(int code) {
Log.d("mySynthesiezer:", "InitListener init() code = " + code);
}
};
/**
* 描述:初始化语音配置
*/
public void init(Context context) {
//处理语音合成关键类
mySynthesizer = SpeechSynthesizer.createSynthesizer(context, myInitListener);
//设置发音人
mySynthesizer.setParameter(SpeechConstant.VOICE_NAME, "yifeng");
//设置音调
mySynthesizer.setParameter(SpeechConstant.PITCH, "50");
//设置音量
mySynthesizer.setParameter(SpeechConstant.VOLUME, "100");
}
/**
* 描述:根据传入的文本转换音频并播放
*/
public void speakText(final String content) {
int code = mySynthesizer.startSpeaking(content, new SynthesizerListener() {
//开始播放
@Override
public void onSpeakBegin() {
}
//缓冲进度回调
@Override
public void onBufferProgress(int i, int i1, int i2, String s) {
}
//暂停播放
@Override
public void onSpeakPaused() {
}
//恢复播放回调接口
@Override
public void onSpeakResumed() {
}
//播放进度回调
@Override
public void onSpeakProgress(int i, int i1, int i2) {
}
//会话结束回调接口
@Override
public void onCompleted(SpeechError speechError) {
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
});
}
}
可是通过以上方法播报语音是已经实现了,可是之后再去点击通知栏内的推送的时候,语音播报会再次响起,而且是打不开APP的,我试着在广播中试着去打开App,这样的话再推送刚一推过来的时候会打开App,点击通知栏的时候依然会打开App,希望能够有大神对以上问题帮帮我,感谢!