Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.82 KB | None | 0 0
  1. public class ConnectXmpp extends Service {
  2.  
  3. private String userName;
  4. private String passWord;
  5. private MyXMPP xmpp = new MyXMPP();
  6.  
  7. public ConnectXmpp() {
  8. }
  9.  
  10. @Override
  11. public void onCreate() {
  12. super.onCreate();
  13.  
  14. }
  15.  
  16. @Override
  17. public IBinder onBind(Intent intent) {
  18. return new LocalBinder<ConnectXmpp>(this);
  19. }
  20.  
  21. @Override
  22. public int onStartCommand(Intent intent, int flags, int startId) {
  23. if (intent != null) {
  24. userName = intent.getStringExtra("user");
  25. passWord = intent.getStringExtra("pwd");
  26. xmpp.init("test2", "test2");
  27. xmpp.connectConnection();
  28. }
  29.  
  30. return 0;
  31. }
  32.  
  33. @Override
  34. public void onDestroy() {
  35. xmpp.disconnectConnection();
  36. super.onDestroy();
  37. }
  38. }
  39.  
  40. public class LocalBinder <S> extends Binder {
  41. private final WeakReference<S> mService;
  42. public LocalBinder(final S service) {
  43. mService = new WeakReference<S>(service);
  44. }
  45. public S getService() {
  46. return mService.get();
  47. }
  48. }
  49.  
  50. public class MyXMPP {
  51.  
  52. private static MyXMPP instance = null;
  53. private static final String DOMAIN = "192.168.1.176";
  54. private static final int PORT = 5222;
  55. private String userName = "test2";
  56. private String passWord = "test2";
  57.  
  58. AbstractXMPPConnection connection;
  59. ChatManager chatmanager;
  60. Chat newChat;
  61. XMPPConnectionListener connectionListener = new XMPPConnectionListener();
  62. private boolean connected;
  63. private boolean isToasted;
  64. private boolean chat_created;
  65. private boolean loggedin;
  66.  
  67. public interface Implementable {
  68. public void passData(String text);
  69. }
  70.  
  71. public void setImple(Implementable imple) {
  72. this.imple = imple;
  73. }
  74.  
  75. Implementable imple;
  76.  
  77. private void sendToSomeActivity(String text) {
  78. if (imple != null) {
  79. imple.passData(text);
  80. }
  81. }
  82.  
  83. public void setListener(Implementable im) {
  84. imple = im;
  85. }
  86.  
  87.  
  88. public MyXMPP() {
  89. this.imple=imple;
  90. XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
  91.  
  92. configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
  93. configBuilder.setResource("someResources");
  94. configBuilder.setServiceName(DOMAIN);
  95. configBuilder.setPort(PORT);
  96. connection = new XMPPTCPConnection(configBuilder.build());
  97. connection.addConnectionListener(connectionListener);
  98. chatmanager = ChatManager.getInstanceFor(connection);
  99.  
  100. newChat = chatmanager.createChat("test@irynas-macbook-air.local", new ChatMessageListener() {
  101. public void processMessage(Chat chat, Message message) {
  102. Log.e("Received message: ", String.valueOf(message));
  103. sendToSomeActivity(String.valueOf(message.getBody()));
  104. }
  105. });
  106.  
  107.  
  108. }
  109.  
  110. //Initialize
  111. public void init(String userId, String pwd) {
  112. this.userName = userId;
  113. this.passWord = pwd;
  114.  
  115. XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
  116. configBuilder.setResource("someResources");
  117. configBuilder.setServiceName(DOMAIN);
  118. configBuilder.setPort(PORT);
  119. connection = new XMPPTCPConnection(configBuilder.build());
  120. connection.addConnectionListener(connectionListener);
  121.  
  122. }
  123.  
  124. // Disconnect Function
  125. public void disconnectConnection() {
  126.  
  127. new Thread(new Runnable() {
  128. @Override
  129. public void run() {
  130. connection.disconnect();
  131. }
  132. }).start();
  133. }
  134.  
  135. public void connectConnection() {
  136. AsyncTask<Void, Void, Boolean> connectionThread = new AsyncTask<Void, Void, Boolean>() {
  137.  
  138. @Override
  139. protected Boolean doInBackground(Void... arg0) {
  140.  
  141. // Create a connection
  142. try {
  143. if( !connection.isConnected()){
  144. connection.connect();
  145. login();
  146. }
  147. connected = true;
  148.  
  149. } catch (IOException e) {
  150. } catch (SmackException e) {
  151. Log.e("SmackException", e.toString());
  152. } catch (XMPPException e) {
  153. } catch (IllegalStateException e) {
  154. Log.e("MessagingService", "Already Logged in as " + connection.getUser());
  155. }
  156.  
  157.  
  158. return null;
  159. }
  160. };
  161. connectionThread.execute();
  162. }
  163.  
  164. public void sendMsg(String message) {
  165. if (connection.isConnected() == true) {
  166. chatmanager = ChatManager.getInstanceFor(connection);
  167. newChat = chatmanager.createChat("test@irynas-macbook-air.local", new ChatMessageListener() {
  168. public void processMessage(Chat chat, Message message) {
  169. Log.e("Received message: ", String.valueOf(message));
  170. sendToSomeActivity(String.valueOf(message.getBody()));
  171. }
  172. });
  173.  
  174.  
  175. try {
  176. newChat.sendMessage(message);
  177. } catch (SmackException.NotConnectedException e) {
  178. e.printStackTrace();
  179. }
  180. }
  181. }
  182.  
  183. public void login() {
  184.  
  185. try {
  186. connection.login(userName, passWord);
  187. } catch (XMPPException | SmackException | IOException e) {
  188. e.printStackTrace();
  189. } catch (Exception e) {
  190. }
  191. }
  192.  
  193. //Connection Listener to check connection state
  194. public class XMPPConnectionListener implements ConnectionListener {
  195. @Override
  196. public void connected(final XMPPConnection connection) {
  197. Log.d("xmpp", "Connected!");
  198. connected = true;
  199. if (!connection.isAuthenticated()) {
  200. login();
  201. }
  202. }
  203.  
  204. @Override
  205. public void connectionClosed() {
  206. if (isToasted)
  207. Log.d("xmpp", "ConnectionCLosed!");
  208. connected = false;
  209. chat_created = false;
  210. loggedin = false;
  211. }
  212.  
  213. @Override
  214. public void connectionClosedOnError(Exception arg0) {
  215. if (isToasted)
  216. Log.d("xmpp", "ConnectionClosedOn Error!");
  217. connected = false;
  218.  
  219. chat_created = false;
  220. loggedin = false;
  221. }
  222.  
  223. @Override
  224. public void reconnectingIn(int arg0) {
  225. Log.d("xmpp", "Reconnectingin " + arg0);
  226. loggedin = false;
  227. }
  228.  
  229. @Override
  230. public void reconnectionFailed(Exception arg0) {
  231. if (isToasted)
  232. Log.d("xmpp", "ReconnectionFailed!");
  233. connected = false;
  234.  
  235. chat_created = false;
  236. loggedin = false;
  237. }
  238.  
  239. @Override
  240. public void reconnectionSuccessful() {
  241. if (isToasted)
  242. Log.d("xmpp", "ReconnectionSuccessful");
  243. connected = true;
  244. chat_created = false;
  245. loggedin = false;
  246. }
  247.  
  248. @Override
  249. public void authenticated(XMPPConnection arg0, boolean arg1) {
  250. Log.d("xmpp", "Authenticated!");
  251. loggedin = true;
  252.  
  253. chat_created = false;
  254. new Thread(new Runnable() {
  255.  
  256. @Override
  257. public void run() {
  258. try {
  259. Thread.sleep(500);
  260. } catch (InterruptedException e) {
  261.  
  262. e.printStackTrace();
  263. }
  264.  
  265. }
  266. }).start();
  267. }
  268. }
  269.  
  270. public static MyXMPP getInstance(Implementable imple) {
  271. if (instance == null) {
  272. instance = new MyXMPP();
  273. }
  274. return instance;
  275. }
  276. }
  277.  
  278. public class ConversationActivity extends BaseActivity implements MyXMPP.Implementable, EmojiconsFragment.OnEmojiconBackspaceClickedListener,
  279. EmojiconGridFragment.OnEmojiconClickedListener {
  280.  
  281.  
  282. @BindView(R.id.btnSend)
  283. FloatingActionButton btnSend;
  284. @BindView(R.id.rvChat)
  285. RecyclerView rvChat;
  286. MyXMPP myXMPP = new MyXMPP();
  287. private ChatBubbleAdapter chatBubbleAdapter;
  288. private ArrayList<ChatMessage> chatMessageList = new ArrayList<>();
  289.  
  290. @Override
  291. public void onCreate(Bundle savedInstanceState) {
  292. super.onCreate(savedInstanceState);
  293. setContentView(R.layout.activity_conversation);
  294. ButterKnife.bind(this);
  295. chatBubbleAdapter = new ChatBubbleAdapter(chatMessageList, new OnItemClickListenerMessage() {
  296. @Override
  297. public void onItemClick(ChatMessage chatMessage) {
  298. }
  299. });
  300.  
  301. RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
  302. rvChat.setLayoutManager(mLayoutManager);
  303. rvChat.setAdapter(chatBubbleAdapter);
  304. chatBubbleAdapter.notifyDataSetChanged();
  305.  
  306. myXMPP.setImple(this);
  307. myXMPP.connectConnection();
  308.  
  309. }
  310.  
  311. @OnClick(R.id.btnSend)
  312. public void send(View view) {
  313. String message = etMessage.getEditableText().toString();
  314. sendTextMessage(message, true);
  315. }
  316.  
  317.  
  318. public void sendTextMessage(String message, boolean userMessage) {
  319.  
  320. if (!message.equalsIgnoreCase("")) {
  321. final ChatMessage chatMessage = new ChatMessage("Adam", "Jhon",
  322. message, "", true);
  323. chatMessage.setMsgID();
  324. chatMessage.body = message;
  325. chatMessage.Date = "2016.11.02";
  326. chatMessage.Time = "17:15";
  327.  
  328. if (userMessage == true) {
  329. chatMessage.isMine = true;
  330. myXMPP.sendMsg(message);
  331. } else {
  332. chatMessage.isMine = false;
  333.  
  334. }
  335. etMessage.setText("");
  336. chatMessageList.add(chatMessage);
  337. chatBubbleAdapter.notifyDataSetChanged();
  338. rvChat.scrollToPosition(chatMessageList.size()-1);
  339.  
  340. }
  341. }
  342.  
  343.  
  344. @Override
  345. public void passData(final String text) {
  346.  
  347. runOnUiThread(new Runnable() {
  348. @Override
  349. public void run() {
  350. sendTextMessage(text, false);
  351. }
  352. });
  353. }
  354. }
  355.  
  356. chatmanager = ChatManager.getInstanceFor(connection);
  357.  
  358. final ChatMessageListener messageListener = new ChatMessageListener() {
  359. @Override
  360. public void processMessage(Chat chat, Message message) {
  361. Log.e("Received message: ", String.valueOf(message));
  362. }
  363. };
  364.  
  365. ChatManagerListener chatManagerListener = new ChatManagerListener() {
  366. @Override
  367. public void chatCreated(Chat chat, boolean createdLocally) {
  368. chat.addMessageListener(messageListener);
  369. }
  370. };
  371. chatmanager.addChatListener(chatManagerListener);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement