最近在做极光推送,接收到内容之后将内容用讯飞语音将内容读出来,通过以下代码已经实现了推送过来实现语音播报的功能:
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,希望能够有大神对以上问题帮帮我,感谢!

解决方案 »

  1.   

    可是通过以上方法播报语音是已经实现了,可是之后再去点击通知栏内的推送的时候,语音播报会再次响起,而且是打不开APP的,我试着在广播中试着去打开App,这样的话再推送刚一推过来的时候会打开App,点击通知栏的时候依然会打开App,希望能够有大神对以上问题帮帮我,感谢!根据你的文字描述,你已经实现了语音播报和点击通知栏打开APP,那么你还有什么问题,我是没看明白