小编Yog*_*nde的帖子

如何使用Smack在多用户聊天消息中检索发件人姓名或其JID?

我正在开发基于Android的XMPP的聊天应用程序.

我已经完成了一对一的聊天功能,但在多用户聊天中遇到了一些问题.我已经成功创建了新的聊天室,多个用户可以加入该会议室.我也addPacketListener为团体聊天编写了代码PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);

当用户在组中发送消息时,我也在该侦听器中接收消息,但我无法区分哪个用户已发送消息.

像一对一的聊天消息包具有message.getFrom()检索发件人JID的功能.

在多用户聊天的情况下,相同的功能将组/房间JID作为发送者返回.

我还试图在发送设置消息的属性message.setFrom(senderJID);message.setFrom(sendername@conference.hostname/Groupname);

仍然我无法获得senderJID或其昵称.

所以我的问题是:如何获取发件人用户JID或其昵称?来自messageListener中的消息(数据包)

在组中发送消息的代码是: -

String to = strGroupJID;
String text = etChatOnTextBox.getText().toString();
if(!text.equals(""))
{
        Message msg = new Message(to, Message.Type.groupchat);
        msg.setBody(text);
        String name1 = xmppConnection.getUser();
        name1 = name1.substring(0, name1.lastIndexOf("@"));
        name1 = name1 + "@conference.192.168.56.1";
       // name1 = name1 + "@conference.192.168.56.1/" + strGroupName ;
        msg.setFrom(name1);
        muc.sendMessage(msg);
 }
Run Code Online (Sandbox Code Playgroud)

接收消息的代码是: -

PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
        connection.addPacketListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) { …
Run Code Online (Sandbox Code Playgroud)

xmpp smack multiuserchat

6
推荐指数
1
解决办法
5101
查看次数

Android Studio淡入主流

我目前正在开发一个Android应用程序.刚开始,我能够实现我的启动画面.但是,我不喜欢它和主要活动之间的过渡.我希望启动画面淡出并主要淡入.看起来它们混合在一起,因为我有两个相同的背景图像.做了一些研究,但还没有找到正确的答案.下面,我发布了我的代码.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;

public class Splash_screen extends Activity {

private Thread mSplashThread;

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_layout);
    final Splash_screen sPlashScreen = this;

    mSplashThread =  new Thread(){
        @Override
        public void run(){
            try {
                synchronized(this){
                    wait(3000);
                }
            }
            catch(InterruptedException ex){
            }
            finish();

            Intent intent = new Intent();
            intent.setClass(sPlashScreen, MainActivity.class);
            startActivity(intent);
        }
    };

    mSplashThread.start();
}

@Override
public boolean onTouchEvent(MotionEvent evt)
{
    if(evt.getAction() == MotionEvent.ACTION_DOWN)
    {
        synchronized(mSplashThread){
            mSplashThread.notifyAll();
        }
    }
    return true;
}
}
Run Code Online (Sandbox Code Playgroud)

MainActivity类 …

android splash-screen fadein android-animation android-studio

6
推荐指数
1
解决办法
1万
查看次数