mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-10-31 09:34:47 +00:00 
			
		
		
		
	Separate call system from the rest of the application
This commit is contained in:
		| @@ -55,6 +55,17 @@ android { | ||||
|             buildConfigField "String", "pdf_view_url", "\"https://pdfviewer.communiquons.org/?file=\"" | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     flavorDimensions "versions" | ||||
|     productFlavors { | ||||
|  | ||||
|         // "Normal" version of the application | ||||
|         normal { } | ||||
|  | ||||
|         // Version with video calls features | ||||
|         videoCalls {} | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
| @@ -64,8 +75,12 @@ dependencies { | ||||
|     implementation 'com.android.support:design:28.0.0' | ||||
|     implementation 'com.android.support:preference-v7:28.0.0' | ||||
|     implementation 'com.android.support:support-v4:28.0.0' | ||||
|     implementation 'com.squareup.okhttp3:okhttp:3.12.1' | ||||
|     implementation 'org.whispersystems:webrtc-android:M71' | ||||
|  | ||||
|     // Library required to make video calls | ||||
|     videoCallsImplementation 'com.squareup.okhttp3:okhttp:3.12.1' | ||||
|     videoCallsImplementation 'org.whispersystems:webrtc-android:M71' | ||||
|  | ||||
|     //Test | ||||
|     testImplementation 'junit:junit:4.12' | ||||
|     androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||||
|     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | ||||
|   | ||||
| @@ -7,12 +7,6 @@ | ||||
|     <uses-permission android:name="android.permission.INTERNET" /> | ||||
|     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||||
|  | ||||
|  | ||||
|     <!-- Video calls require camera and microphone --> | ||||
|     <uses-permission android:name="android.permission.CAMERA" /> | ||||
|     <uses-permission android:name="android.permission.RECORD_AUDIO" /> | ||||
|  | ||||
|  | ||||
|     <!-- To save file (eg. images) into user storage --> | ||||
|     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||||
|  | ||||
| @@ -81,32 +75,6 @@ | ||||
|             android:name=".ui.activities.AboutActivity" | ||||
|             android:label="@string/activity_about_title" /> | ||||
|  | ||||
|         <!-- Call activity --> | ||||
|         <activity | ||||
|             android:name=".ui.activities.CallActivity" | ||||
|             android:label="@string/activity_call_label" /> | ||||
|  | ||||
|         <!-- Incoming call activity --> | ||||
|         <activity android:name=".ui.activities.IncomingCallActivity" /> | ||||
|  | ||||
|         <!-- New calls available receiver --> | ||||
|         <receiver | ||||
|             android:name=".ui.receivers.PendingCallsBroadcastReceiver" | ||||
|             android:exported="false"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="org.communiquons.android.comunic.client.NEW_CALLS_AVAILABLE" /> | ||||
|             </intent-filter> | ||||
|         </receiver> | ||||
|  | ||||
|         <!-- Reject new call receiver --> | ||||
|         <receiver | ||||
|             android:name=".ui.receivers.RejectCallReceiver" | ||||
|             android:exported="false"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="org.communiquons.android.comunic.client.REJECT_INCOMING_CALL" /> | ||||
|             </intent-filter> | ||||
|         </receiver> | ||||
|  | ||||
|  | ||||
|     </application> | ||||
|  | ||||
|   | ||||
| @@ -3,10 +3,8 @@ package org.communiquons.android.comunic.client.ui.activities; | ||||
| import android.Manifest; | ||||
| import android.app.Activity; | ||||
| import android.app.AlertDialog; | ||||
| import android.app.Dialog; | ||||
| import android.content.BroadcastReceiver; | ||||
| import android.content.Context; | ||||
| import android.content.DialogInterface; | ||||
| import android.content.Intent; | ||||
| import android.content.IntentFilter; | ||||
| import android.net.Uri; | ||||
| @@ -26,24 +24,18 @@ import android.widget.Toast; | ||||
| 
 | ||||
| import org.communiquons.android.comunic.client.BuildConfig; | ||||
| import org.communiquons.android.comunic.client.R; | ||||
| import org.communiquons.android.comunic.client.ui.utils.PermissionsUtils; | ||||
| import org.communiquons.crashreporter.CrashReporter; | ||||
| import org.communiquons.android.comunic.client.data.enums.VirtualDirectoryType; | ||||
| import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper; | ||||
| import org.communiquons.android.comunic.client.data.helpers.AccountHelper; | ||||
| import org.communiquons.android.comunic.client.data.helpers.ConversationsListHelper; | ||||
| import org.communiquons.android.comunic.client.data.helpers.DatabaseHelper; | ||||
| import org.communiquons.android.comunic.client.data.helpers.DebugHelper; | ||||
| import org.communiquons.android.comunic.client.data.models.CallInformation; | ||||
| import org.communiquons.android.comunic.client.data.models.NotificationsCount; | ||||
| import org.communiquons.android.comunic.client.data.models.VirtualDirectory; | ||||
| import org.communiquons.android.comunic.client.data.runnables.FriendRefreshLoopRunnable; | ||||
| import org.communiquons.android.comunic.client.data.services.NotificationsService; | ||||
| import org.communiquons.android.comunic.client.data.utils.PreferencesUtils; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.CreateCallForConversationTask; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.FindVirtualDirectoryTask; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.GetCallConfigurationTask; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask; | ||||
| import org.communiquons.android.comunic.client.ui.fragments.ConversationFragment; | ||||
| import org.communiquons.android.comunic.client.ui.fragments.ConversationsListFragment; | ||||
| import org.communiquons.android.comunic.client.ui.fragments.FriendsListFragment; | ||||
| @@ -56,13 +48,14 @@ import org.communiquons.android.comunic.client.ui.fragments.groups.GroupPageMain | ||||
| import org.communiquons.android.comunic.client.ui.fragments.groups.UserGroupsFragment; | ||||
| import org.communiquons.android.comunic.client.ui.fragments.userpage.UserAccessDeniedFragment; | ||||
| import org.communiquons.android.comunic.client.ui.fragments.userpage.UserPageFragment; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.OnOpenCallListener; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.OnOpenPageListener; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.onPostOpenListener; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.openConversationListener; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.updateConversationListener; | ||||
| import org.communiquons.android.comunic.client.ui.utils.PermissionsUtils; | ||||
| import org.communiquons.android.comunic.client.ui.utils.UiUtils; | ||||
| import org.communiquons.android.comunic.client.ui.views.NavigationBar; | ||||
| import org.communiquons.crashreporter.CrashReporter; | ||||
| 
 | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| @@ -77,9 +70,9 @@ import static org.communiquons.android.comunic.client.ui.Constants.PreferencesKe | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class MainActivity extends BaseActivity implements | ||||
| public abstract class AbstractMainActivity extends BaseActivity implements | ||||
|         openConversationListener, updateConversationListener, OnOpenPageListener, | ||||
|         onPostOpenListener, NavigationBar.OnNavigationItemSelectedListener, OnOpenCallListener { | ||||
|         onPostOpenListener, NavigationBar.OnNavigationItemSelectedListener { | ||||
| 
 | ||||
|     /** | ||||
|      * Debug tag | ||||
| @@ -191,11 +184,6 @@ public class MainActivity extends BaseActivity implements | ||||
|         IntentFilter intentFilter = new IntentFilter(NotificationsService.BROADCAST_ACTION); | ||||
|         LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, intentFilter); | ||||
| 
 | ||||
|         //Get calls configuration | ||||
|         GetCallConfigurationTask callConfigurationTask = new GetCallConfigurationTask(this); | ||||
|         callConfigurationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||
|         getTasksManager().addTask(callConfigurationTask); | ||||
| 
 | ||||
|         //Request a few permissions | ||||
|         PermissionsUtils.RequestPermissions(this, | ||||
|                 new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); | ||||
| @@ -369,12 +357,7 @@ public class MainActivity extends BaseActivity implements | ||||
|             PopupMenu popupMenu = new PopupMenu(this, | ||||
|                     mNavBar.getItemIdentifierView(R.id.action_more)); | ||||
|             onCreateOptionsMenu(popupMenu.getMenu()); | ||||
|             popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { | ||||
|                 @Override | ||||
|                 public boolean onMenuItemClick(MenuItem item) { | ||||
|                     return onOptionsItemSelected(item); | ||||
|                 } | ||||
|             }); | ||||
|             popupMenu.setOnMenuItemClickListener(this::onOptionsItemSelected); | ||||
|             popupMenu.show(); | ||||
|             return false; | ||||
|         } | ||||
| @@ -397,7 +380,7 @@ public class MainActivity extends BaseActivity implements | ||||
|         if(!(activity instanceof MainActivity)) | ||||
|             throw new RuntimeException("Specified activity is not an instance of activity!"); | ||||
| 
 | ||||
|         ((MainActivity)activity).mNavBar.setIdentifierSelected(id); | ||||
|         ((AbstractMainActivity)activity).mNavBar.setIdentifierSelected(id); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| @@ -469,23 +452,17 @@ public class MainActivity extends BaseActivity implements | ||||
|                 .setMessage(R.string.popup_signout_message) | ||||
|                 .setCancelable(true) | ||||
|                 .setPositiveButton(R.string.popup_signout_confirm_button, | ||||
|                         new DialogInterface.OnClickListener() { | ||||
|                             @Override | ||||
|                             public void onClick(DialogInterface dialog, int which) { | ||||
|                         (dialog, which) -> { | ||||
| 
 | ||||
|                             //Sign out user | ||||
|                             accountHelper.sign_out(); | ||||
| 
 | ||||
|                             //Redirect to login activity | ||||
|                                 startActivity(new Intent(MainActivity.this, LoginActivity.class)); | ||||
|                             startActivity(new Intent(AbstractMainActivity.this, LoginActivity.class)); | ||||
| 
 | ||||
|                             } | ||||
|                         }) | ||||
|                 .setNegativeButton(R.string.popup_signout_cancel_button, new DialogInterface.OnClickListener() { | ||||
|                     @Override | ||||
|                     public void onClick(DialogInterface dialog, int which) { | ||||
|                 .setNegativeButton(R.string.popup_signout_cancel_button, (dialog, which) -> { | ||||
|                     //Nothing now | ||||
|                     } | ||||
|                 }) | ||||
| 
 | ||||
|                 //Show popup | ||||
| @@ -537,12 +514,9 @@ public class MainActivity extends BaseActivity implements | ||||
| 
 | ||||
|         unsetFindVirtualDirectoryTask(); | ||||
|         mFindVirtualDirectoryTask = new FindVirtualDirectoryTask(this); | ||||
|         mFindVirtualDirectoryTask.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<VirtualDirectory>() { | ||||
|             @Override | ||||
|             public void OnPostExecute(VirtualDirectory virtualDirectory) { | ||||
|         mFindVirtualDirectoryTask.setOnPostExecuteListener(virtualDirectory -> { | ||||
|             dialog.dismiss(); | ||||
|             openDirectory(virtualDirectory); | ||||
|             } | ||||
|         }); | ||||
|         mFindVirtualDirectoryTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, tag); | ||||
| 
 | ||||
| @@ -724,7 +698,7 @@ public class MainActivity extends BaseActivity implements | ||||
|                 if (integer != null) | ||||
|                     openConversation(integer); | ||||
|                 else | ||||
|                     Toast.makeText(MainActivity.this, R.string.err_get_private_conversation, | ||||
|                     Toast.makeText(AbstractMainActivity.this, R.string.err_get_private_conversation, | ||||
|                             Toast.LENGTH_SHORT).show(); | ||||
|             } | ||||
|         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, userID); | ||||
| @@ -875,40 +849,5 @@ public class MainActivity extends BaseActivity implements | ||||
|         transaction.commit(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void createCallForConversation(int convID) { | ||||
|         final Dialog dialog = UiUtils.create_loading_dialog(this); | ||||
| 
 | ||||
|         //Create the call for the conversation | ||||
|         CreateCallForConversationTask task = new CreateCallForConversationTask(this); | ||||
|         task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, convID); | ||||
|         getTasksManager().addTask(task, true); | ||||
|         task.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<CallInformation>() { | ||||
|             @Override | ||||
|             public void OnPostExecute(@Nullable CallInformation callInformation) { | ||||
| 
 | ||||
|                 dialog.dismiss(); | ||||
| 
 | ||||
|                 //Check for errors | ||||
|                 if(callInformation == null) | ||||
|                     Toast.makeText( | ||||
|                             MainActivity.this, | ||||
|                             R.string.err_create_call_for_conversation, | ||||
|                             Toast.LENGTH_SHORT).show(); | ||||
| 
 | ||||
|                 else | ||||
|                     //Open call | ||||
|                     openCall(callInformation.getId()); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void openCall(int callID) { | ||||
| 
 | ||||
|         Intent intent = new Intent(this, CallActivity.class); | ||||
|         intent.putExtra(CallActivity.ARGUMENT_CALL_ID, callID); | ||||
|         startActivity(intent); | ||||
| 
 | ||||
| } | ||||
| } | ||||
| @@ -500,9 +500,7 @@ public class ConversationFragment extends Fragment | ||||
|  | ||||
|  | ||||
|         //Add call button (if possible) | ||||
|         if(CallsHelper.IsCallSystemAvailable() && info.getMembers().size() > 1 && info.getMembers().size() <= | ||||
|                 Objects.requireNonNull(CallsHelper.GetCallsConfiguration()).getMaximumNumberMembers() && | ||||
|                 !mHasCallButton) { | ||||
|         if(CallsHelper.IsCallSystemAvailableForConversation(info) && !mHasCallButton) { | ||||
|  | ||||
|             mHasCallButton = true; | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,64 @@ | ||||
| package org.communiquons.android.comunic.client.data.helpers; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.support.annotation.Nullable; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.data.models.ConversationInfo; | ||||
|  | ||||
| /** | ||||
|  * Calls helper | ||||
|  * | ||||
|  * Placeholder for the flavor of the application where there is no call possible | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class CallsHelper extends BaseHelper { | ||||
|  | ||||
|     /** | ||||
|      * Debug tag | ||||
|      */ | ||||
|     private static final String TAG = CallsHelper.class.getSimpleName(); | ||||
|  | ||||
|  | ||||
|     public CallsHelper(Context context) { | ||||
|         super(context); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get call configuration if required | ||||
|      */ | ||||
|     public void getCallConfigurationIfRequired(){ | ||||
|         // Do nothing | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get Calls configuration, if available | ||||
|      * | ||||
|      * Note if IsCallSystemAvailable returned TRUE, it is guaranteed that this method WILL NOT | ||||
|      * return null | ||||
|      * | ||||
|      * @return Calls configuration | ||||
|      */ | ||||
|     @Nullable | ||||
|     public static Object GetCallsConfiguration(){ | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * No call possible with this flavour | ||||
|      */ | ||||
|     public static boolean IsCallSystemAvailable(){ | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * No call for no conversation | ||||
|      * | ||||
|      * @param conversation Target conversation | ||||
|      * @return false | ||||
|      */ | ||||
|     public static boolean IsCallSystemAvailableForConversation(ConversationInfo conversation){ | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| package org.communiquons.android.comunic.client.ui.activities; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Main activity for abstract configuration | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class MainActivity extends AbstractMainActivity { | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| package org.communiquons.android.comunic.client.ui.receivers; | ||||
|  | ||||
| import android.content.BroadcastReceiver; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
|  | ||||
| /** | ||||
|  * Pending class broadcast receiver | ||||
|  * | ||||
|  * Does nothing in this flavor | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class PendingCallsBroadcastReceiver extends BroadcastReceiver { | ||||
|     @Override | ||||
|     public void onReceive(Context context, Intent intent) { | ||||
|         // Do nothing | ||||
|     } | ||||
|  | ||||
|     public static void RemoveCallNotification(Context context){ | ||||
|         // Do nothing | ||||
|     } | ||||
| } | ||||
							
								
								
									
										52
									
								
								app/src/videoCalls/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								app/src/videoCalls/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     package="org.communiquons.android.comunic.client"> | ||||
|  | ||||
|  | ||||
|     <!-- Video calls require camera and microphone --> | ||||
|     <uses-permission android:name="android.permission.CAMERA" /> | ||||
|     <uses-permission android:name="android.permission.RECORD_AUDIO" /> | ||||
|  | ||||
|  | ||||
|  | ||||
|     <application | ||||
|         android:allowBackup="true" | ||||
|         android:fullBackupContent="@xml/backup_scheme" | ||||
|         android:icon="@drawable/ic_app_rounded" | ||||
|         android:label="@string/app_name" | ||||
|         android:roundIcon="@drawable/ic_app_rounded" | ||||
|         android:supportsRtl="true" | ||||
|         android:theme="@style/AppTheme" | ||||
|         tools:ignore="GoogleAppIndexingWarning"> | ||||
|  | ||||
|         <!-- Call activity --> | ||||
|         <activity | ||||
|             android:name=".ui.activities.CallActivity" | ||||
|             android:label="@string/activity_call_label" /> | ||||
|  | ||||
|         <!-- Incoming call activity --> | ||||
|         <activity android:name=".ui.activities.IncomingCallActivity" /> | ||||
|  | ||||
|         <!-- New calls available receiver --> | ||||
|         <receiver | ||||
|             android:name=".ui.receivers.PendingCallsBroadcastReceiver" | ||||
|             android:exported="false"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="org.communiquons.android.comunic.client.NEW_CALLS_AVAILABLE" /> | ||||
|             </intent-filter> | ||||
|         </receiver> | ||||
|  | ||||
|         <!-- Reject new call receiver --> | ||||
|         <receiver | ||||
|             android:name=".ui.receivers.RejectCallReceiver" | ||||
|             android:exported="false"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="org.communiquons.android.comunic.client.REJECT_INCOMING_CALL" /> | ||||
|             </intent-filter> | ||||
|         </receiver> | ||||
|  | ||||
|  | ||||
|     </application> | ||||
|  | ||||
| </manifest> | ||||
| @@ -11,6 +11,7 @@ import org.communiquons.android.comunic.client.data.models.CallInformation; | ||||
| import org.communiquons.android.comunic.client.data.models.CallMember; | ||||
| import org.communiquons.android.comunic.client.data.models.CallResponse; | ||||
| import org.communiquons.android.comunic.client.data.models.CallsConfiguration; | ||||
| import org.communiquons.android.comunic.client.data.models.ConversationInfo; | ||||
| import org.communiquons.android.comunic.client.data.models.NextPendingCallInformation; | ||||
| import org.json.JSONArray; | ||||
| import org.json.JSONException; | ||||
| @@ -18,6 +19,7 @@ import org.json.JSONObject; | ||||
| import org.webrtc.PeerConnection; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| /** | ||||
|  * Calls helper | ||||
| @@ -93,6 +95,16 @@ public class CallsHelper extends BaseHelper { | ||||
|         return mCallsConfiguration != null && mCallsConfiguration.isEnabled(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Check out whether call system is available for a given conversation or not | ||||
|      */ | ||||
|     public static boolean IsCallSystemAvailableForConversation(ConversationInfo conversation){ | ||||
|         return CallsHelper.IsCallSystemAvailable() && | ||||
|                 conversation.getMembers().size() > 1 && | ||||
|                 conversation.getMembers().size() <= Objects.requireNonNull( | ||||
|                         CallsHelper.GetCallsConfiguration()).getMaximumNumberMembers(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Get the list of STUN and TURN servers | ||||
|      * | ||||
| @@ -0,0 +1,66 @@ | ||||
| package org.communiquons.android.comunic.client.ui.activities; | ||||
|  | ||||
| import android.app.Dialog; | ||||
| import android.content.Intent; | ||||
| import android.os.AsyncTask; | ||||
| import android.os.Bundle; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.R; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.CreateCallForConversationTask; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.GetCallConfigurationTask; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.OnOpenCallListener; | ||||
| import org.communiquons.android.comunic.client.ui.utils.UiUtils; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * MainActivity implementation for video calls | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class MainActivity extends AbstractMainActivity implements OnOpenCallListener { | ||||
|  | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|  | ||||
|         //Get calls configuration | ||||
|         GetCallConfigurationTask callConfigurationTask = new GetCallConfigurationTask(this); | ||||
|         callConfigurationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||
|         getTasksManager().addTask(callConfigurationTask); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void createCallForConversation(int convID) { | ||||
|         final Dialog dialog = UiUtils.create_loading_dialog(this); | ||||
|  | ||||
|         //Create the call for the conversation | ||||
|         CreateCallForConversationTask task = new CreateCallForConversationTask(this); | ||||
|         task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, convID); | ||||
|         getTasksManager().addTask(task, true); | ||||
|         task.setOnPostExecuteListener(callInformation -> { | ||||
|  | ||||
|             dialog.dismiss(); | ||||
|  | ||||
|             //Check for errors | ||||
|             if(callInformation == null) | ||||
|                 Toast.makeText( | ||||
|                         MainActivity.this, | ||||
|                         R.string.err_create_call_for_conversation, | ||||
|                         Toast.LENGTH_SHORT).show(); | ||||
|  | ||||
|             else | ||||
|                 //Open call | ||||
|                 openCall(callInformation.getId()); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void openCall(int callID) { | ||||
|  | ||||
|         Intent intent = new Intent(this, CallActivity.class); | ||||
|         intent.putExtra(CallActivity.ARGUMENT_CALL_ID, callID); | ||||
|         startActivity(intent); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -23,7 +23,6 @@ import org.communiquons.android.comunic.client.ui.activities.BaseActivity; | ||||
| import org.communiquons.android.comunic.client.ui.activities.CallActivity; | ||||
| import org.communiquons.android.comunic.client.ui.activities.IncomingCallActivity; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.GetNextPendingCallTask; | ||||
| import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask; | ||||
| import org.communiquons.android.comunic.client.ui.utils.UiUtils; | ||||
| 
 | ||||
| import java.util.Objects; | ||||
		Reference in New Issue
	
	Block a user