Skip to content

Commit ec79b58

Browse files
authored
Merge pull request #77 from videosdk-live/dev/deepak/main
chore + fixes: Upgrade dependency, Pubsub API, FGS and Pre-call bug fixed.
2 parents 144b10f + 93d11fb commit ec79b58

12 files changed

Lines changed: 251 additions & 45 deletions

File tree

app/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id 'com.android.application'
33
}
44

5-
apply plugin: 'com.google.gms.google-services'
5+
// apply plugin: 'com.google.gms.google-services'
66
// Apply the Crashlytics Gradle plugin
77
apply plugin: 'com.google.firebase.crashlytics'
88

@@ -11,13 +11,13 @@ localProperties.load(new FileInputStream(rootProject.file("local.properties")))
1111

1212
android {
1313
namespace "live.videosdk.rtc.android.java"
14-
compileSdkVersion 34
14+
compileSdkVersion 36
1515

1616
defaultConfig {
1717
applicationId "live.videosdk.rtc.android.java"
18-
minSdkVersion 21
18+
minSdkVersion 24
1919
//noinspection EditedTargetSdkVersion
20-
targetSdkVersion 34
20+
targetSdkVersion 36
2121
versionCode 2
2222
versionName "1.1"
2323
multiDexEnabled true
@@ -52,15 +52,15 @@ android {
5252

5353
dependencies {
5454

55-
implementation 'live.videosdk:rtc-android-sdk:0.1.30'
55+
implementation 'live.videosdk:rtc-android-sdk:1.1.1'
5656
implementation 'com.nabinbhandari.android:permissions:3.8'
5757
implementation 'com.amitshekhar.android:android-networking:1.0.2'
5858

5959
implementation 'androidx.appcompat:appcompat:1.6.1'
6060
implementation 'com.google.android.material:material:1.11.0'
6161
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
6262
implementation 'androidx.cardview:cardview:1.0.0'
63-
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
63+
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.29'
6464
implementation "com.airbnb.android:lottie:5.2.0"
6565
implementation "androidx.viewpager2:viewpager2:1.0.0"
6666

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
android:screenOrientation="portrait"
5050
android:hardwareAccelerated="true" />
5151

52+
<service android:name=".Service.ForegroundService"
53+
android:foregroundServiceType="camera|microphone"
54+
android:stopWithTask="true" />
55+
5256
<meta-data
5357
android:name="notificationTitle"
5458
android:value="@string/notificationTitle" />

app/src/main/java/live/videosdk/rtc/android/java/Common/Activity/CreateOrJoinActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,10 @@ private void checkPermissions() {
386386
permissionList.add(Manifest.permission.INTERNET);
387387
permissionList.add(Manifest.permission.READ_PHONE_STATE);
388388

389+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
390+
permissionList.add(Manifest.permission.POST_NOTIFICATIONS);
391+
}
392+
389393
com.nabinbhandari.android.permissions.Permissions.Options options = new com.nabinbhandari.android.permissions.Permissions.Options().sendDontAskAgainToSettings(false);
390394
com.nabinbhandari.android.permissions.Permissions.check(this, permissionList.toArray(new String[0]), null, options, permissionHandler);
391395

app/src/main/java/live/videosdk/rtc/android/java/Common/MainApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class MainApplication extends Application {
1111
@Override
1212
public void onCreate() {
1313
super.onCreate();
14+
VideoSDK.setEnableActivityLifecycle(false);
1415
VideoSDK.initialize(getApplicationContext());
1516
AndroidNetworking.initialize(getApplicationContext());
1617
}

app/src/main/java/live/videosdk/rtc/android/java/Common/Utils/HelperClass.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public void onClick(View view) {
127127
View tableLayoutView = ((LinearLayout) linearView).getChildAt(1);
128128

129129
Timer timer = new Timer();
130-
timer.scheduleAtFixedRate(new TimerTask() {
130+
timer.schedule(new TimerTask() {
131131
@Override
132132
public void run() {
133133
JSONObject audio_stats = null;
@@ -137,7 +137,11 @@ public void run() {
137137
video_stats = participant.getShareStats();
138138
}else {
139139
audio_stats = participant.getAudioStats();
140-
video_stats = participant.getVideoStats();
140+
try {
141+
video_stats = participant.getVideoStats().getJSONObject(0);
142+
} catch (JSONException e) {
143+
throw new RuntimeException(e);
144+
}
141145
}
142146

143147
int score = 0;

app/src/main/java/live/videosdk/rtc/android/java/GroupCall/Activity/GroupCallActivity.java

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,10 @@
9595
import live.videosdk.rtc.android.java.Common.Roboto_font;
9696
import live.videosdk.rtc.android.java.Common.Utils.HelperClass;
9797
import live.videosdk.rtc.android.java.Common.Utils.NetworkUtils;
98+
import live.videosdk.rtc.android.java.Service.ForegroundService;
9899
import live.videosdk.rtc.android.lib.AppRTCAudioManager;
99100
import live.videosdk.rtc.android.lib.JsonUtils;
101+
import live.videosdk.rtc.android.lib.MeetingState;
100102
import live.videosdk.rtc.android.lib.PubSubMessage;
101103
import live.videosdk.rtc.android.listeners.MeetingEventListener;
102104
import live.videosdk.rtc.android.listeners.MicRequestListener;
@@ -439,6 +441,10 @@ public void onResponse(Integer meetingTime) {
439441
}
440442
});
441443

444+
Intent serviceIntent = new Intent(getApplicationContext(), ForegroundService.class);
445+
serviceIntent.setAction(ForegroundService.ACTION_START);
446+
startService(serviceIntent);
447+
442448

443449
viewPager2.setOffscreenPageLimit(1);
444450
viewPager2.setAdapter(viewAdapter);
@@ -464,6 +470,11 @@ public void onMessageReceived(PubSubMessage pubSubMessage) {
464470
snackbar.getView().setOnClickListener(view -> snackbar.dismiss());
465471
snackbar.show();
466472
}
473+
474+
@Override
475+
public void onOldMessagesReceived(List<PubSubMessage> messages) {
476+
477+
}
467478
};
468479

469480
// notify user for raise hand
@@ -485,6 +496,11 @@ public void onMessageReceived(PubSubMessage pubSubMessage) {
485496
snackbar.show();
486497
}
487498
}
499+
500+
@Override
501+
public void onOldMessagesReceived(List<PubSubMessage> messages) {
502+
503+
}
488504
};
489505
// notify user of any new messages
490506
meeting.pubSub.subscribe("CHAT", chatListener);
@@ -540,6 +556,9 @@ public void onMeetingLeft() {
540556
| Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
541557

542558
startActivity(intents);
559+
Intent serviceIntent = new Intent(getApplicationContext(), ForegroundService.class);
560+
serviceIntent.setAction(ForegroundService.ACTION_STOP);
561+
startService(serviceIntent);
543562
finish();
544563
}
545564
}
@@ -600,8 +619,8 @@ public void onSpeakerChanged(String participantId) {
600619
}
601620

602621
@Override
603-
public void onMeetingStateChanged(String state) {
604-
if (state == "FAILED") {
622+
public void onMeetingStateChanged(MeetingState state) {
623+
if (state == MeetingState.DISCONNECTED) {
605624
View parentLayout = findViewById(android.R.id.content);
606625
SpannableStringBuilder builderTextLeft = new SpannableStringBuilder();
607626
builderTextLeft.append(" Call disconnected. Reconnecting...");
@@ -697,7 +716,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
697716
return;
698717
}
699718

700-
meeting.enableScreenShare(data);
719+
meeting.enableScreenShare(data, true);
701720
}
702721

703722
private final com.nabinbhandari.android.permissions.PermissionHandler permissionHandler = new com.nabinbhandari.android.permissions.PermissionHandler() {
@@ -1295,23 +1314,32 @@ public void afterTextChanged(Editable editable) {
12951314
}
12961315
});
12971316

1317+
messageAdapter = new MessageAdapter(this, R.layout.item_message_list, new ArrayList<>(), meeting);
1318+
messageRcv.setAdapter(messageAdapter);
1319+
messageRcv.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) ->
1320+
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1));
1321+
12981322
//
12991323
pubSubMessageListener = new PubSubMessageListener() {
13001324
@Override
13011325
public void onMessageReceived(PubSubMessage message) {
13021326
messageAdapter.addItem(message);
13031327
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1);
13041328
}
1329+
1330+
@Override
1331+
public void onOldMessagesReceived(List<PubSubMessage> messages) {
1332+
for (PubSubMessage message : messages) {
1333+
messageAdapter.addItem(message);
1334+
}
1335+
if (messages.size() > 0) {
1336+
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1);
1337+
}
1338+
}
13051339
};
13061340

13071341
// Subscribe for 'CHAT' topic
1308-
List<PubSubMessage> pubSubMessageList = meeting.pubSub.subscribe("CHAT", pubSubMessageListener);
1309-
1310-
//
1311-
messageAdapter = new MessageAdapter(this, R.layout.item_message_list, pubSubMessageList, meeting);
1312-
messageRcv.setAdapter(messageAdapter);
1313-
messageRcv.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) ->
1314-
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1));
1342+
meeting.pubSub.subscribe("CHAT", pubSubMessageListener);
13151343

13161344
v3.findViewById(R.id.btnSend).setOnClickListener(view -> {
13171345
String message = etmessage.getText().toString();

app/src/main/java/live/videosdk/rtc/android/java/OneToOneCall/OneToOneCallActivity.java

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,10 @@
9393
import live.videosdk.rtc.android.java.Common.Roboto_font;
9494
import live.videosdk.rtc.android.java.Common.Utils.HelperClass;
9595
import live.videosdk.rtc.android.java.Common.Utils.NetworkUtils;
96+
import live.videosdk.rtc.android.java.Service.ForegroundService;
9697
import live.videosdk.rtc.android.lib.AppRTCAudioManager;
9798
import live.videosdk.rtc.android.lib.JsonUtils;
99+
import live.videosdk.rtc.android.lib.MeetingState;
98100
import live.videosdk.rtc.android.lib.PubSubMessage;
99101
import live.videosdk.rtc.android.listeners.MeetingEventListener;
100102
import live.videosdk.rtc.android.listeners.MicRequestListener;
@@ -471,6 +473,10 @@ public void onMeetingJoined() {
471473
// Local participant listeners
472474
setLocalListeners();
473475

476+
Intent serviceIntent = new Intent(getApplicationContext(), ForegroundService.class);
477+
serviceIntent.setAction(ForegroundService.ACTION_START);
478+
startService(serviceIntent);
479+
474480

475481
new NetworkUtils(OneToOneCallActivity.this).fetchMeetingTime(meeting.getMeetingId(), token, new ResponseListener<Integer>() {
476482
@Override
@@ -480,25 +486,30 @@ public void onResponse(Integer meetingTime) {
480486
}
481487
});
482488

483-
chatListener = new PubSubMessageListener() {
484-
@Override
485-
public void onMessageReceived(PubSubMessage pubSubMessage) {
486-
if (!pubSubMessage.getSenderId().equals(meeting.getLocalParticipant().getId())) {
487-
View parentLayout = findViewById(android.R.id.content);
488-
Snackbar snackbar =
489-
Snackbar.make(parentLayout, pubSubMessage.getSenderName() + " says: " +
490-
pubSubMessage.getMessage(), Snackbar.LENGTH_SHORT)
491-
.setDuration(2000);
492-
View snackbarView = snackbar.getView();
493-
HelperClass.setSnackBarStyle(snackbarView, 0);
494-
snackbar.getView().setOnClickListener(view -> snackbar.dismiss());
495-
snackbar.show();
496-
}
489+
chatListener = new PubSubMessageListener() {
490+
@Override
491+
public void onMessageReceived(PubSubMessage pubSubMessage) {
492+
if (!pubSubMessage.getSenderId().equals(meeting.getLocalParticipant().getId())) {
493+
View parentLayout = findViewById(android.R.id.content);
494+
Snackbar snackbar =
495+
Snackbar.make(parentLayout, pubSubMessage.getSenderName() + " says: " +
496+
pubSubMessage.getMessage(), Snackbar.LENGTH_SHORT)
497+
.setDuration(2000);
498+
View snackbarView = snackbar.getView();
499+
HelperClass.setSnackBarStyle(snackbarView, 0);
500+
snackbar.getView().setOnClickListener(view -> snackbar.dismiss());
501+
snackbar.show();
497502
}
498-
};
503+
}
504+
505+
@Override
506+
public void onOldMessagesReceived(List<PubSubMessage> messages) {
499507

500-
// notify user of any new messages
501-
meeting.pubSub.subscribe("CHAT", chatListener);
508+
}
509+
};
510+
511+
// notify user of any new messages
512+
meeting.pubSub.subscribe("CHAT", chatListener);
502513

503514
//terminate meeting in 10 minutes
504515
new Handler().postDelayed(new Runnable() {
@@ -566,6 +577,10 @@ public void onMeetingLeft() {
566577
| Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
567578
startActivity(intents);
568579

580+
Intent serviceIntent = new Intent(getApplicationContext(), ForegroundService.class);
581+
serviceIntent.setAction(ForegroundService.ACTION_STOP);
582+
startService(serviceIntent);
583+
569584
finish();
570585
}
571586
}
@@ -677,8 +692,8 @@ public void onSpeakerChanged(String participantId) {
677692
}
678693

679694
@Override
680-
public void onMeetingStateChanged(String state) {
681-
if (state == "FAILED" ) {
695+
public void onMeetingStateChanged(MeetingState state) {
696+
if (state == MeetingState.DISCONNECTED) {
682697
View parentLayout = findViewById(android.R.id.content);
683698
SpannableStringBuilder builderTextLeft = new SpannableStringBuilder();
684699
builderTextLeft.append(" Call disconnected. Reconnecting...");
@@ -768,7 +783,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
768783
return;
769784
}
770785

771-
meeting.enableScreenShare(data);
786+
meeting.enableScreenShare(data, true);
772787
}
773788

774789
private void updatePresenter(String participantId) {
@@ -1650,23 +1665,33 @@ public void afterTextChanged(Editable editable) {
16501665
}
16511666
});
16521667

1668+
messageAdapter = new MessageAdapter(this, R.layout.item_message_list, new ArrayList<>(), meeting);
1669+
messageRcv.setAdapter(messageAdapter);
1670+
messageRcv.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) ->
1671+
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1));
1672+
16531673
//
16541674
pubSubMessageListener = new PubSubMessageListener() {
16551675
@Override
16561676
public void onMessageReceived(PubSubMessage message) {
16571677
messageAdapter.addItem(message);
16581678
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1);
16591679
}
1680+
1681+
@Override
1682+
public void onOldMessagesReceived(List<PubSubMessage> messages) {
1683+
for (PubSubMessage message : messages) {
1684+
messageAdapter.addItem(message);
1685+
}
1686+
if (messages.size() > 0) {
1687+
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1);
1688+
}
1689+
}
16601690
};
16611691

16621692
// Subscribe for 'CHAT' topic
1663-
List<PubSubMessage> pubSubMessageList = meeting.pubSub.subscribe("CHAT", pubSubMessageListener);
1693+
meeting.pubSub.subscribe("CHAT", pubSubMessageListener);
16641694

1665-
//
1666-
messageAdapter = new MessageAdapter(this, R.layout.item_message_list, pubSubMessageList, meeting);
1667-
messageRcv.setAdapter(messageAdapter);
1668-
messageRcv.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) ->
1669-
messageRcv.scrollToPosition(messageAdapter.getItemCount() - 1));
16701695

16711696
v3.findViewById(R.id.btnSend).setOnClickListener(view -> {
16721697
String message = etmessage.getText().toString();

0 commit comments

Comments
 (0)