小编xhs*_*ier的帖子

当客户端连接突然丢失时,xmpp消息将丢失

我正在使用ejabberd服务器和ios xmppframework.有两个客户,A和B.

  1. 当A和B在线时,A可以成功向B发送消息.
  2. 如果B离线,B可以在B再次联机时收到消息.
  3. 但是当B突然/意外地丢失连接时,例如手动关闭wi-fi,A发送的消息就会丢失.B永远不会收到此消息.

我想原因是B突然失去连接,服务器仍然认为B在线.因此,离线消息在这种情况下可以正常工作.

所以我的问题是如何确保B发送的消息将被B接收?确保没有消息丢失.

message xmpp ejabberd xmppframework

10
推荐指数
2
解决办法
4201
查看次数

Android在进行语音识别时录制音频

我正在使用Android上的第三方云服务进行语音识别,并且它适用于Android API SpeechRecognizer.代码如下:

    Intent recognizerIntent =
            new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);

    // accept partial results if they come
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);

    //need to have a calling package for it to work
    if (!recognizerIntent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE)) {
        recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.example.speechrecognition");
    }
    recognizer = SpeechRecognizer.createSpeechRecognizer(context);
    recognizer.setRecognitionListener(this);
    recognizer.startListening(recognizerIntent);
Run Code Online (Sandbox Code Playgroud)

同时,我想用不同的音频设置录制音频,如频率,频道,音频格式等.然后我会不断分析这个音频缓冲区.我使用AudioRecord来达到目的.这只适用于我关闭语音识别.

如果我同时录制音频和语音识别,则会发生错误.

E/AudioRecord: start() status -38
Run Code Online (Sandbox Code Playgroud)

如何实现这种功能,我也试过原生音频 - SLRecordItf,也行不通.

android speech-recognition audio-recording

5
推荐指数
1
解决办法
3076
查看次数

如何通过向 ejabberd 服务器发送一个 <presence> 消息来加入多个房间

例如,我有 20 个房间要加入。简单的解决方案是向每个房间 id 发送 20 条消息。考虑到性能,这很糟糕。

我想通过发送一条<presence>消息加入20个房间,如何实现?编写一个模块来挂钩自定义<presence>消息?但是我不知道如何编写这种模块。

xmpp ejabberd multiuserchat

2
推荐指数
1
解决办法
1343
查看次数