diff --git a/Rooster/.idea/caches/build_file_checksums.ser b/Rooster/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..2e3fe03 Binary files /dev/null and b/Rooster/.idea/caches/build_file_checksums.ser differ diff --git a/Rooster/.idea/codeStyles/Project.xml b/Rooster/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/Rooster/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/Rooster/.idea/gradle.xml b/Rooster/.idea/gradle.xml index 7ac24c7..5cd135a 100644 --- a/Rooster/.idea/gradle.xml +++ b/Rooster/.idea/gradle.xml @@ -1,8 +1,10 @@ + - + diff --git a/Rooster/.idea/modules.xml b/Rooster/.idea/modules.xml index 41b5b1e..0155e36 100644 --- a/Rooster/.idea/modules.xml +++ b/Rooster/.idea/modules.xml @@ -3,6 +3,8 @@ + + diff --git a/Rooster/.idea/vcs.xml b/Rooster/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Rooster/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Rooster/app/build.gradle b/Rooster/app/build.gradle index 08173da..0e40d8e 100644 --- a/Rooster/app/build.gradle +++ b/Rooster/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 - buildToolsVersion '27.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.3' defaultConfig { applicationId "com.blikoon.rooster" - minSdkVersion 16 - targetSdkVersion 23 + minSdkVersion 21 + targetSdkVersion 29 versionCode 1 versionName "1.0" } @@ -20,8 +20,7 @@ android { } ext { - smackVersion = '4.2.4' - supportLibVersion = '27.1.0' + smackVersion = '4.3.4' } //Ge rid of problem described here : https://stackoverflow.com/questions/31049735/can-not-run-application-below-lollipop @@ -30,14 +29,16 @@ configurations { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - testCompile 'junit:junit:4.12' - implementation "com.android.support:appcompat-v7:$supportLibVersion" - implementation "com.android.support:design:$supportLibVersion" - implementation "com.android.support:recyclerview-v7:$supportLibVersion" + implementation fileTree(include: ['*.jar'], dir: 'libs') + testImplementation 'junit:junit:4.13' + + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'com.google.android.material:material:1.1.0' + implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'com.github.timigod:android-chat-ui:v0.1.3' + implementation "org.igniterealtime.smack:smack-tcp:$smackVersion" implementation "org.igniterealtime.smack:smack-experimental:$smackVersion" - implementation "org.igniterealtime.smack:smack-android:$smackVersion" + implementation "org.igniterealtime.smack:smack-android:${smackVersion}" } diff --git a/Rooster/app/src/main/AndroidManifest.xml b/Rooster/app/src/main/AndroidManifest.xml index dd04cd7..f72df33 100644 --- a/Rooster/app/src/main/AndroidManifest.xml +++ b/Rooster/app/src/main/AndroidManifest.xml @@ -1,32 +1,32 @@ - + - - - - - + + android:theme="@style/AppTheme" + tools:replace="android:allowBackup" + > + android:label="@string/app_name" + > - + - + - - - - + + + diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/ChatActivity.java b/Rooster/app/src/main/java/com/blikoon/rooster/ChatActivity.java index 9c239a4..fb08451 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/ChatActivity.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/ChatActivity.java @@ -4,18 +4,18 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; import co.intentservice.chatui.ChatView; import co.intentservice.chatui.models.ChatMessage; public class ChatActivity extends AppCompatActivity { - private static final String TAG ="ChatActivity"; + private static final String TAG = "ChatActivity"; private String contactJid; private ChatView mChatView; @@ -25,11 +25,11 @@ public class ChatActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat); - mChatView =(ChatView) findViewById(R.id.rooster_chat_view); + mChatView = (ChatView) findViewById(R.id.rooster_chat_view); - mChatView.setOnSentMessageListener(new ChatView.OnSentMessageListener(){ + mChatView.setOnSentMessageListener(new ChatView.OnSentMessageListener() { @Override - public boolean sendMessage(ChatMessage chatMessage){ + public boolean sendMessage(ChatMessage chatMessage) { // perform actual message sending if (RoosterConnectionService.getState().equals(RoosterConnection.ConnectionState.CONNECTED)) { Log.d(TAG, "The client is connected to the server,Sending Message"); @@ -53,18 +53,6 @@ public boolean sendMessage(ChatMessage chatMessage){ }); - - - - - - - - - - - - Intent intent = getIntent(); contactJid = intent.getStringExtra("EXTRA_CONTACT_JID"); setTitle(contactJid); @@ -83,20 +71,17 @@ protected void onResume() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - switch (action) - { + switch (action) { case RoosterConnectionService.NEW_MESSAGE: String from = intent.getStringExtra(RoosterConnectionService.BUNDLE_FROM_JID); String body = intent.getStringExtra(RoosterConnectionService.BUNDLE_MESSAGE_BODY); - if ( from.equals(contactJid)) - { - ChatMessage chatMessage = new ChatMessage(body,System.currentTimeMillis(), ChatMessage.Type.RECEIVED); + if (from.equals(contactJid)) { + ChatMessage chatMessage = new ChatMessage(body, System.currentTimeMillis(), ChatMessage.Type.RECEIVED); mChatView.addMessage(chatMessage); - }else - { - Log.d(TAG,"Got a message from jid :"+from); + } else { + Log.d(TAG, "Got a message from jid :" + from); } return; @@ -106,7 +91,7 @@ public void onReceive(Context context, Intent intent) { }; IntentFilter filter = new IntentFilter(RoosterConnectionService.NEW_MESSAGE); - registerReceiver(mBroadcastReceiver,filter); + registerReceiver(mBroadcastReceiver, filter); } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/Contact.java b/Rooster/app/src/main/java/com/blikoon/rooster/Contact.java index 0a328c7..cd4d674 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/Contact.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/Contact.java @@ -6,13 +6,11 @@ public class Contact { private String jid; - public Contact(String contactJid ) - { + public Contact(String contactJid) { jid = contactJid; } - public String getJid() - { + public String getJid() { return jid; } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/ContactListActivity.java b/Rooster/app/src/main/java/com/blikoon/rooster/ContactListActivity.java index a71101a..4cbd975 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/ContactListActivity.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/ContactListActivity.java @@ -1,10 +1,7 @@ package com.blikoon.rooster; import android.content.Intent; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -14,6 +11,10 @@ import android.view.ViewGroup; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import java.util.List; public class ContactListActivity extends AppCompatActivity { @@ -47,18 +48,17 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(MenuItem item) { - if(item.getItemId() == R.id.rooster_logout) - { + if (item.getItemId() == R.id.rooster_logout) { //Disconnect from server - Log.d(TAG,"Initiating the log out process"); - Intent i1 = new Intent(this,RoosterConnectionService.class); + Log.d(TAG, "Initiating the log out process"); + Intent i1 = new Intent(this, RoosterConnectionService.class); stopService(i1); //Finish this activity finish(); //Start login activity for user to login - Intent loginIntent = new Intent(this,LoginActivity.class); + Intent loginIntent = new Intent(this, LoginActivity.class); startActivity(loginIntent); } @@ -66,12 +66,11 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } - private class ContactHolder extends RecyclerView.ViewHolder - { + private class ContactHolder extends RecyclerView.ViewHolder { private TextView contactTextView; private Contact mContact; - public ContactHolder ( View itemView) - { + + public ContactHolder(View itemView) { super(itemView); contactTextView = (TextView) itemView.findViewById(R.id.contact_jid); @@ -81,8 +80,8 @@ public ContactHolder ( View itemView) public void onClick(View v) { //Inside here we start the chat activity Intent intent = new Intent(ContactListActivity.this - ,ChatActivity.class); - intent.putExtra("EXTRA_CONTACT_JID",mContact.getJid()); + , ChatActivity.class); + intent.putExtra("EXTRA_CONTACT_JID", mContact.getJid()); startActivity(intent); @@ -91,12 +90,10 @@ public void onClick(View v) { } - public void bindContact( Contact contact) - { + public void bindContact(Contact contact) { mContact = contact; - if (mContact == null) - { - Log.d(TAG,"Trying to work on a null Contact object ,returning."); + if (mContact == null) { + Log.d(TAG, "Trying to work on a null Contact object ,returning."); return; } contactTextView.setText(mContact.getJid()); @@ -105,12 +102,10 @@ public void bindContact( Contact contact) } - private class ContactAdapter extends RecyclerView.Adapter - { + private class ContactAdapter extends RecyclerView.Adapter { private List mContacts; - public ContactAdapter( List contactList) - { + public ContactAdapter(List contactList) { mContacts = contactList; } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/ContactModel.java b/Rooster/app/src/main/java/com/blikoon/rooster/ContactModel.java index 60b419f..28d99c0 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/ContactModel.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/ContactModel.java @@ -13,27 +13,22 @@ public class ContactModel { private static ContactModel sContactModel; private List mContacts; - public static ContactModel get(Context context) - { - if(sContactModel == null) - { + public static ContactModel get(Context context) { + if (sContactModel == null) { sContactModel = new ContactModel(context); } - return sContactModel; + return sContactModel; } - private ContactModel(Context context) - { + private ContactModel(Context context) { mContacts = new ArrayList<>(); populateWithInitialContacts(context); } - private void populateWithInitialContacts(Context context) - { + private void populateWithInitialContacts(Context context) { //Create the Foods and add them to the list; - Contact contact1 = new Contact("gakwaya@salama.im"); mContacts.add(contact1); Contact contact2 = new Contact("User2@server.com"); @@ -50,8 +45,7 @@ private void populateWithInitialContacts(Context context) mContacts.add(contact7); } - public List getContacts() - { + public List getContacts() { return mContacts; } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/LoginActivity.java b/Rooster/app/src/main/java/com/blikoon/rooster/LoginActivity.java index 38d9043..29ec034 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/LoginActivity.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/LoginActivity.java @@ -2,20 +2,13 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; -import android.annotation.TargetApi; -import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.preference.PreferenceManager; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.os.Build; import android.os.Bundle; +import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; @@ -27,15 +20,14 @@ import android.widget.EditText; import android.widget.TextView; -import static android.Manifest.permission.READ_CONTACTS; +import androidx.appcompat.app.AppCompatActivity; /** * A login screen that offers login via jid/password. */ -public class LoginActivity extends AppCompatActivity -{ +public class LoginActivity extends AppCompatActivity { - private static final String TAG="LoginActivity"; + private static final String TAG = "LoginActivity"; /** * Id to identity READ_CONTACTS permission request. @@ -58,7 +50,6 @@ protected void onCreate(Bundle savedInstanceState) { //Show // Set up the login form. mJidView = (AutoCompleteTextView) findViewById(R.id.email); - populateAutoComplete(); mPasswordView = (EditText) findViewById(R.id.password); mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @@ -84,7 +75,6 @@ public void onClick(View view) { mProgressView = findViewById(R.id.login_progress); mContext = this; - } @Override @@ -101,16 +91,13 @@ protected void onResume() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - switch (action) - { - case RoosterConnectionService.UI_AUTHENTICATED: - Log.d(TAG,"Got a broadcast to show the main app window"); - //Show the main app window - showProgress(false); - Intent i2 = new Intent(mContext,ContactListActivity.class); - startActivity(i2); - finish(); - break; + if (RoosterConnectionService.UI_AUTHENTICATED.equals(action)) { + Log.d(TAG, "Got a broadcast to show the main app window"); + //Show the main app window + showProgress(false); + Intent i2 = new Intent(mContext, ContactListActivity.class); + startActivity(i2); + finish(); } } @@ -119,50 +106,6 @@ public void onReceive(Context context, Intent intent) { this.registerReceiver(mBroadcastReceiver, filter); } - private void populateAutoComplete() { - if (!mayRequestContacts()) { - return; - } - - //getLoaderManager().initLoader(0, null, this); - } - - private boolean mayRequestContacts() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return true; - } - if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { - return true; - } - if (shouldShowRequestPermissionRationale(READ_CONTACTS)) { - Snackbar.make(mJidView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE) - .setAction(android.R.string.ok, new View.OnClickListener() { - @Override - @TargetApi(Build.VERSION_CODES.M) - public void onClick(View v) { - requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); - } - }); - } else { - requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); - } - return false; - } - - /** - * Callback received when a permissions request has been completed. - */ - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - if (requestCode == REQUEST_READ_CONTACTS) { - if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - populateAutoComplete(); - } - } - } - - /** * Attempts to sign in or register the account specified by the login form. * If there are form errors (invalid email, missing fields, etc.), the @@ -217,18 +160,17 @@ private void attemptLogin() { } } - private void saveCredentialsAndLogin() - { - Log.d(TAG,"saveCredentialsAndLogin() called."); + private void saveCredentialsAndLogin() { + Log.d(TAG, "saveCredentialsAndLogin() called."); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.edit() .putString("xmpp_jid", mJidView.getText().toString()) .putString("xmpp_password", mPasswordView.getText().toString()) - .putBoolean("xmpp_logged_in",true) + .putBoolean("xmpp_logged_in", true) .commit(); //Start the service - Intent i1 = new Intent(this,RoosterConnectionService.class); + Intent i1 = new Intent(this, RoosterConnectionService.class); startService(i1); } @@ -246,54 +188,30 @@ private boolean isPasswordValid(String password) { /** * Shows the progress UI and hides the login form. */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) private void showProgress(final boolean show) { // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow // for very easy animations. If available, use these APIs to fade-in // the progress spinner. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { - int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); - - mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); - mLoginFormView.animate().setDuration(shortAnimTime).alpha( - show ? 0 : 1).setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); - } - }); - - mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); - mProgressView.animate().setDuration(shortAnimTime).alpha( - show ? 1 : 0).setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); - } - }); - } else { - // The ViewPropertyAnimator APIs are not available, so simply show - // and hide the relevant UI components. - mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); - mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); - } - } - - - + int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + mLoginFormView.animate().setDuration(shortAnimTime).alpha( + show ? 0 : 1).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + } + }); - //Check if service is running. - private boolean isServiceRunning(Class serviceClass) { - ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); - for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { - if (serviceClass.getName().equals(service.service.getClassName())) { - return true; + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + mProgressView.animate().setDuration(shortAnimTime).alpha( + show ? 1 : 0).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); } - } - return false; + }); } - } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnection.java b/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnection.java index 450a3a6..202a7fc 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnection.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnection.java @@ -14,8 +14,6 @@ import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; - -import org.jivesoftware.smack.chat.ChatMessageListener; import org.jivesoftware.smack.chat2.Chat; import org.jivesoftware.smack.chat2.ChatManager; import org.jivesoftware.smack.chat2.IncomingChatMessageListener; @@ -35,53 +33,46 @@ public class RoosterConnection implements ConnectionListener { private static final String TAG = "RoosterConnection"; - private final Context mApplicationContext; - private final String mUsername; - private final String mPassword; - private final String mServiceName; + private final Context mApplicationContext; + private final String mUsername; + private final String mPassword; + private final String mServiceName; private XMPPTCPConnection mConnection; private BroadcastReceiver uiThreadMessageReceiver;//Receives messages from the ui thread. - public static enum ConnectionState - { - CONNECTED ,AUTHENTICATED, CONNECTING ,DISCONNECTING ,DISCONNECTED; + public enum ConnectionState { + CONNECTED, AUTHENTICATED, CONNECTING, DISCONNECTING, DISCONNECTED } - public static enum LoggedInState - { - LOGGED_IN , LOGGED_OUT; + public enum LoggedInState { + LOGGED_IN, LOGGED_OUT } - - public RoosterConnection( Context context) - { - Log.d(TAG,"RoosterConnection Constructor called."); + public RoosterConnection(Context context) { + Log.d(TAG, "RoosterConnection Constructor called."); mApplicationContext = context.getApplicationContext(); String jid = PreferenceManager.getDefaultSharedPreferences(mApplicationContext) - .getString("xmpp_jid",null); + .getString("xmpp_jid", null); mPassword = PreferenceManager.getDefaultSharedPreferences(mApplicationContext) - .getString("xmpp_password",null); + .getString("xmpp_password", null); - if( jid != null) - { + if (jid != null) { mUsername = jid.split("@")[0]; mServiceName = jid.split("@")[1]; - }else - { - mUsername =""; - mServiceName=""; + } else { + mUsername = ""; + mServiceName = ""; } } - public void connect() throws IOException,XMPPException,SmackException - { + public void connect() throws IOException, XMPPException, SmackException { Log.d(TAG, "Connecting to server " + mServiceName); XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder() .setXmppDomain(mServiceName) - .setHost("salama.im") + .setHost("conversations.im") .setResource("Rooster") //Was facing this issue @@ -91,9 +82,9 @@ public void connect() throws IOException,XMPPException,SmackException .setSecurityMode(ConnectionConfiguration.SecurityMode.required) .setCompressionEnabled(true).build(); - Log.d(TAG, "Username : "+mUsername); - Log.d(TAG, "Password : "+mPassword); - Log.d(TAG, "Server : "+mServiceName); + Log.d(TAG, "Username : " + mUsername); + Log.d(TAG, "Password : " + mPassword); + Log.d(TAG, "Server : " + mServiceName); //Set up the ui thread broadcast message receiver. @@ -104,7 +95,7 @@ public void connect() throws IOException,XMPPException,SmackException try { Log.d(TAG, "Calling connect() "); mConnection.connect(); - mConnection.login(mUsername,mPassword); + mConnection.login(mUsername, mPassword); Log.d(TAG, " login() Called "); } catch (InterruptedException e) { e.printStackTrace(); @@ -114,29 +105,27 @@ public void connect() throws IOException,XMPPException,SmackException @Override public void newIncomingMessage(EntityBareJid messageFrom, Message message, Chat chat) { ///ADDED - Log.d(TAG,"message.getBody() :"+message.getBody()); - Log.d(TAG,"message.getFrom() :"+message.getFrom()); + Log.d(TAG, "message.getBody() :" + message.getBody()); + Log.d(TAG, "message.getFrom() :" + message.getFrom()); String from = message.getFrom().toString(); - String contactJid=""; - if ( from.contains("/")) - { + String contactJid = ""; + if (from.contains("/")) { contactJid = from.split("/")[0]; - Log.d(TAG,"The real jid is :" +contactJid); - Log.d(TAG,"The message is from :" +from); - }else - { - contactJid=from; + Log.d(TAG, "The real jid is :" + contactJid); + Log.d(TAG, "The message is from :" + from); + } else { + contactJid = from; } //Bundle up the intent and send the broadcast. Intent intent = new Intent(RoosterConnectionService.NEW_MESSAGE); intent.setPackage(mApplicationContext.getPackageName()); - intent.putExtra(RoosterConnectionService.BUNDLE_FROM_JID,contactJid); - intent.putExtra(RoosterConnectionService.BUNDLE_MESSAGE_BODY,message.getBody()); + intent.putExtra(RoosterConnectionService.BUNDLE_FROM_JID, contactJid); + intent.putExtra(RoosterConnectionService.BUNDLE_MESSAGE_BODY, message.getBody()); mApplicationContext.sendBroadcast(intent); - Log.d(TAG,"Received message from :"+contactJid+" broadcast sent."); + Log.d(TAG, "Received message from :" + contactJid + " broadcast sent."); ///ADDED } @@ -144,20 +133,18 @@ public void newIncomingMessage(EntityBareJid messageFrom, Message message, Chat ReconnectionManager reconnectionManager = ReconnectionManager.getInstanceFor(mConnection); - reconnectionManager.setEnabledPerDefault(true); + ReconnectionManager.setEnabledPerDefault(true); reconnectionManager.enableAutomaticReconnection(); } - private void setupUiThreadBroadCastMessageReceiver() - { + private void setupUiThreadBroadCastMessageReceiver() { uiThreadMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //Check if the Intents purpose is to send the message. String action = intent.getAction(); - if( action.equals(RoosterConnectionService.SEND_MESSAGE)) - { + if (action.equals(RoosterConnectionService.SEND_MESSAGE)) { //Send the message. sendMessage(intent.getStringExtra(RoosterConnectionService.BUNDLE_MESSAGE_BODY), intent.getStringExtra(RoosterConnectionService.BUNDLE_TO)); @@ -167,13 +154,12 @@ public void onReceive(Context context, Intent intent) { IntentFilter filter = new IntentFilter(); filter.addAction(RoosterConnectionService.SEND_MESSAGE); - mApplicationContext.registerReceiver(uiThreadMessageReceiver,filter); + mApplicationContext.registerReceiver(uiThreadMessageReceiver, filter); } - private void sendMessage ( String body ,String toJid) - { - Log.d(TAG,"Sending message to :"+ toJid); + private void sendMessage(String body, String toJid) { + Log.d(TAG, "Sending message to :" + toJid); EntityBareJid jid = null; @@ -199,23 +185,20 @@ private void sendMessage ( String body ,String toJid) } - public void disconnect() - { - Log.d(TAG,"Disconnecting from serser "+ mServiceName); + public void disconnect() { + Log.d(TAG, "Disconnecting from serser " + mServiceName); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mApplicationContext); - prefs.edit().putBoolean("xmpp_logged_in",false).commit(); + prefs.edit().putBoolean("xmpp_logged_in", false).commit(); - if (mConnection != null) - { + if (mConnection != null) { mConnection.disconnect(); } mConnection = null; // Unregister the message broadcast receiver. - if( uiThreadMessageReceiver != null) - { + if (uiThreadMessageReceiver != null) { mApplicationContext.unregisterReceiver(uiThreadMessageReceiver); uiThreadMessageReceiver = null; } @@ -225,59 +208,37 @@ public void disconnect() @Override public void connected(XMPPConnection connection) { - RoosterConnectionService.sConnectionState=ConnectionState.CONNECTED; - Log.d(TAG,"Connected Successfully"); + RoosterConnectionService.sConnectionState = ConnectionState.CONNECTED; + Log.d(TAG, "Connected Successfully"); } @Override public void authenticated(XMPPConnection connection, boolean resumed) { - RoosterConnectionService.sConnectionState=ConnectionState.CONNECTED; - Log.d(TAG,"Authenticated Successfully"); + RoosterConnectionService.sConnectionState = ConnectionState.CONNECTED; + Log.d(TAG, "Authenticated Successfully"); showContactListActivityWhenAuthenticated(); } @Override public void connectionClosed() { - RoosterConnectionService.sConnectionState=ConnectionState.DISCONNECTED; - Log.d(TAG,"Connectionclosed()"); + RoosterConnectionService.sConnectionState = ConnectionState.DISCONNECTED; + Log.d(TAG, "Connectionclosed()"); } @Override public void connectionClosedOnError(Exception e) { - RoosterConnectionService.sConnectionState=ConnectionState.DISCONNECTED; - Log.d(TAG,"ConnectionClosedOnError, error "+ e.toString()); - - } - - @Override - public void reconnectingIn(int seconds) { - RoosterConnectionService.sConnectionState = ConnectionState.CONNECTING; - Log.d(TAG,"ReconnectingIn() "); - - } - - @Override - public void reconnectionSuccessful() { - RoosterConnectionService.sConnectionState = ConnectionState.CONNECTED; - Log.d(TAG,"ReconnectionSuccessful()"); - - } - - @Override - public void reconnectionFailed(Exception e) { RoosterConnectionService.sConnectionState = ConnectionState.DISCONNECTED; - Log.d(TAG,"ReconnectionFailed()"); + Log.d(TAG, "ConnectionClosedOnError, error " + e.toString()); } - private void showContactListActivityWhenAuthenticated() - { + private void showContactListActivityWhenAuthenticated() { Intent i = new Intent(RoosterConnectionService.UI_AUTHENTICATED); i.setPackage(mApplicationContext.getPackageName()); mApplicationContext.sendBroadcast(i); - Log.d(TAG,"Sent the broadcast that we are authenticated"); + Log.d(TAG, "Sent the broadcast that we are authenticated"); } } diff --git a/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnectionService.java b/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnectionService.java index fe85c04..52403f2 100644 --- a/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnectionService.java +++ b/Rooster/app/src/main/java/com/blikoon/rooster/RoosterConnectionService.java @@ -5,9 +5,10 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; -import android.support.annotation.Nullable; import android.util.Log; +import androidx.annotation.Nullable; + import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; @@ -17,7 +18,7 @@ * Created by gakwaya on 4/28/2016. */ public class RoosterConnectionService extends Service { - private static final String TAG ="RoosterService"; + private static final String TAG = "RoosterService"; public static final String UI_AUTHENTICATED = "com.blikoon.rooster.uiauthenticated"; public static final String SEND_MESSAGE = "com.blikoon.rooster.sendmessage"; @@ -38,19 +39,16 @@ public class RoosterConnectionService extends Service { public RoosterConnectionService() { } - public static RoosterConnection.ConnectionState getState() - { - if (sConnectionState == null) - { + + public static RoosterConnection.ConnectionState getState() { + if (sConnectionState == null) { return RoosterConnection.ConnectionState.DISCONNECTED; } return sConnectionState; } - public static RoosterConnection.LoggedInState getLoggedInState() - { - if (sLoggedInState == null) - { + public static RoosterConnection.LoggedInState getLoggedInState() { + if (sLoggedInState == null) { return RoosterConnection.LoggedInState.LOGGED_OUT; } return sLoggedInState; @@ -65,23 +63,19 @@ public IBinder onBind(Intent intent) { @Override public void onCreate() { super.onCreate(); - Log.d(TAG,"onCreate()"); + Log.d(TAG, "onCreate()"); } - private void initConnection() - { - Log.d(TAG,"initConnection()"); - if( mConnection == null) - { + private void initConnection() { + Log.d(TAG, "initConnection()"); + if (mConnection == null) { mConnection = new RoosterConnection(this); } - try - { + try { mConnection.connect(); - }catch (IOException |SmackException |XMPPException e) - { - Log.d(TAG,"Something went wrong while connecting ,make sure the credentials are right and try again"); + } catch (IOException | SmackException | XMPPException e) { + Log.d(TAG, "Something went wrong while connecting ,make sure the credentials are right and try again"); e.printStackTrace(); //Stop the service all together. stopSelf(); @@ -90,14 +84,11 @@ private void initConnection() } - public void start() - { - Log.d(TAG," Service Start() function called."); - if(!mActive) - { + public void start() { + Log.d(TAG, " Service Start() function called."); + if (!mActive) { mActive = true; - if( mThread ==null || !mThread.isAlive()) - { + if (mThread == null || !mThread.isAlive()) { mThread = new Thread(new Runnable() { @Override public void run() { @@ -118,15 +109,13 @@ public void run() { } - public void stop() - { - Log.d(TAG,"stop()"); + public void stop() { + Log.d(TAG, "stop()"); mActive = false; mTHandler.post(new Runnable() { @Override public void run() { - if( mConnection != null) - { + if (mConnection != null) { mConnection.disconnect(); } } @@ -134,10 +123,9 @@ public void run() { } - @Override public int onStartCommand(Intent intent, int flags, int startId) { - Log.d(TAG,"onStartCommand()"); + Log.d(TAG, "onStartCommand()"); start(); return Service.START_STICKY; //RETURNING START_STICKY CAUSES OUR CODE TO STICK AROUND WHEN THE APP ACTIVITY HAS DIED. @@ -145,7 +133,7 @@ public int onStartCommand(Intent intent, int flags, int startId) { @Override public void onDestroy() { - Log.d(TAG,"onDestroy()"); + Log.d(TAG, "onDestroy()"); super.onDestroy(); stop(); } diff --git a/Rooster/app/src/main/res/layout/activity_contact_list.xml b/Rooster/app/src/main/res/layout/activity_contact_list.xml index 49a47cc..72ddb38 100644 --- a/Rooster/app/src/main/res/layout/activity_contact_list.xml +++ b/Rooster/app/src/main/res/layout/activity_contact_list.xml @@ -10,11 +10,11 @@ android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.blikoon.rooster.ContactListActivity"> - - + diff --git a/Rooster/app/src/main/res/layout/activity_login.xml b/Rooster/app/src/main/res/layout/activity_login.xml index 5300b98..e89ddde 100644 --- a/Rooster/app/src/main/res/layout/activity_login.xml +++ b/Rooster/app/src/main/res/layout/activity_login.xml @@ -30,7 +30,7 @@ android:layout_height="wrap_content" android:orientation="vertical"> - @@ -43,9 +43,9 @@ android:maxLines="1" android:singleLine="true"/> - + - @@ -61,7 +61,7 @@ android:maxLines="1" android:singleLine="true"/> - +