Advertisement
Guest User

MessageService.java

a guest
Jul 13th, 2015
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. import android.app.Service;
  2. import android.content.Intent;
  3. import android.os.Binder;
  4. import android.os.IBinder;
  5. import android.support.v4.content.LocalBroadcastManager;
  6.  
  7. import com.parse.ParseUser;
  8. import com.sinch.android.rtc.ClientRegistration;
  9. import com.sinch.android.rtc.Sinch;
  10. import com.sinch.android.rtc.SinchClient;
  11. import com.sinch.android.rtc.SinchClientListener;
  12. import com.sinch.android.rtc.SinchError;
  13. import com.sinch.android.rtc.messaging.MessageClient;
  14. import com.sinch.android.rtc.messaging.MessageClientListener;
  15. import com.sinch.android.rtc.messaging.WritableMessage;
  16.  
  17. public class MessageService extends Service implements SinchClientListener {
  18.  
  19. private static final String APP_KEY = "68a35377-1d68-4336-9d4a-b0bbb43f3b0d";
  20. private static final String APP_SECRET = "5GloiO4BIUSe271wrq8dyA==";
  21. private static final String ENVIRONMENT = "sandbox.sinch.com";
  22. private final MessageServiceInterface serviceInterface = new MessageServiceInterface();
  23. private SinchClient sinchClient = null;
  24. private MessageClient messageClient = null;
  25. private String currentUserId;
  26. private String currentUserName;
  27. private LocalBroadcastManager broadcaster;
  28. private Intent broadcastIntent = new Intent("com.sinch.messagingtutorial.app.ListUsersActivity");
  29.  
  30. @Override
  31. public int onStartCommand(Intent intent, int flags, int startId) {
  32.  
  33. currentUserId = ParseUser.getCurrentUser().getObjectId();
  34. currentUserName = ParseUser.getCurrentUser().getUsername();
  35.  
  36. if (currentUserId != null && !isSinchClientStarted()) {
  37. startSinchClient(currentUserId);
  38. }
  39.  
  40. broadcaster = LocalBroadcastManager.getInstance(this);
  41.  
  42. return super.onStartCommand(intent, flags, startId);
  43. }
  44.  
  45. public void startSinchClient(String username) {
  46. sinchClient = Sinch.getSinchClientBuilder().context(this).userId(username).applicationKey(APP_KEY)
  47. .applicationSecret(APP_SECRET).environmentHost(ENVIRONMENT).build();
  48.  
  49. sinchClient.addSinchClientListener(this);
  50.  
  51. sinchClient.setSupportMessaging(true);
  52. sinchClient.setSupportActiveConnectionInBackground(true);
  53.  
  54. sinchClient.checkManifest();
  55. sinchClient.start();
  56. }
  57.  
  58. private boolean isSinchClientStarted() {
  59. return sinchClient != null && sinchClient.isStarted();
  60. }
  61.  
  62. @Override
  63. public void onClientFailed(SinchClient client, SinchError error) {
  64. broadcastIntent.putExtra("success", false);
  65. broadcaster.sendBroadcast(broadcastIntent);
  66.  
  67. sinchClient = null;
  68. }
  69.  
  70. @Override
  71. public void onClientStarted(SinchClient client) {
  72. broadcastIntent.putExtra("success", true);
  73. broadcaster.sendBroadcast(broadcastIntent);
  74.  
  75. client.startListeningOnActiveConnection();
  76. messageClient = client.getMessageClient();
  77. }
  78.  
  79. @Override
  80. public void onClientStopped(SinchClient client) {
  81. sinchClient = null;
  82. }
  83.  
  84. @Override
  85. public IBinder onBind(Intent intent) {
  86. return serviceInterface;
  87. }
  88.  
  89. @Override
  90. public void onLogMessage(int level, String area, String message) {
  91. }
  92.  
  93. @Override
  94. public void onRegistrationCredentialsRequired(SinchClient client, ClientRegistration clientRegistration) {
  95. }
  96.  
  97. public void sendMessage(String recipientUserId, String textBody) {
  98. if (messageClient != null) {
  99. WritableMessage message = new WritableMessage(recipientUserId, textBody);
  100. messageClient.send(message);
  101. }
  102. }
  103.  
  104. public void addMessageClientListener(MessageClientListener listener) {
  105. if (messageClient != null) {
  106. messageClient.addMessageClientListener(listener);
  107. }
  108. }
  109.  
  110. public void removeMessageClientListener(MessageClientListener listener) {
  111. if (messageClient != null) {
  112. messageClient.removeMessageClientListener(listener);
  113. }
  114. }
  115.  
  116. @Override
  117. public void onDestroy() {
  118. sinchClient.stopListeningOnActiveConnection();
  119. sinchClient.terminate();
  120. }
  121.  
  122. public class MessageServiceInterface extends Binder {
  123. public void sendMessage(String recipientUserId, String textBody) {
  124. MessageService.this.sendMessage(recipientUserId, textBody);
  125. }
  126.  
  127. public void addMessageClientListener(MessageClientListener listener) {
  128. MessageService.this.addMessageClientListener(listener);
  129. }
  130.  
  131. public void removeMessageClientListener(MessageClientListener listener) {
  132. MessageService.this.removeMessageClientListener(listener);
  133. }
  134.  
  135. public boolean isSinchClientStarted() {
  136. return MessageService.this.isSinchClientStarted();
  137. }
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement