最近在做极光推送,接收到内容之后将内容用讯飞语音将内容读出来,通过以下代码已经实现了推送过来实现语音播报的功能:
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,希望能够有大神对以上问题帮帮我,感谢!
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,希望能够有大神对以上问题帮帮我,感谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货