Skip to content

Commit b78cc63

Browse files
authored
Merge pull request #23 from UN-ICC/master
Dismiss incoming call timers when accepting or rejecting a call
2 parents 3dff8c8 + a630c64 commit b78cc63

File tree

2 files changed

+31
-27
lines changed

2 files changed

+31
-27
lines changed

android/src/main/java/com/incomingcall/IncomingCallModule.java

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import android.view.WindowManager;
77
import android.content.Context;
88
import android.util.Log;
9-
import java.util.Timer;
10-
import java.util.TimerTask;
11-
129
import com.facebook.react.bridge.ReactApplicationContext;
1310
import com.facebook.react.bridge.ReactContextBaseJavaModule;
1411
import com.facebook.react.bridge.ReactMethod;
@@ -47,6 +44,7 @@ public void display(String uuid, String name, String avatar, String info, int ti
4744
bundle.putString("name", name);
4845
bundle.putString("avatar", avatar);
4946
bundle.putString("info", info);
47+
bundle.putInt("timeout", timeout);
5048
Intent i = new Intent(reactContext, UnlockScreenActivity.class);
5149
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
5250
i.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED +
@@ -55,30 +53,10 @@ public void display(String uuid, String name, String avatar, String info, int ti
5553

5654
i.putExtras(bundle);
5755
reactContext.startActivity(i);
58-
59-
if (timeout > 0) {
60-
new Timer().schedule(new TimerTask() {
61-
@Override
62-
public void run() {
63-
// this code will be executed after timeout seconds
64-
UnlockScreenActivity.dismissIncoming();
65-
}
66-
}, timeout);
67-
}
56+
6857
}
6958
}
7059

71-
@ReactMethod
72-
public void dismiss() {
73-
// final Activity activity = reactContext.getCurrentActivity();
74-
75-
// assert activity != null;
76-
77-
UnlockScreenActivity.dismissIncoming();
78-
79-
return;
80-
}
81-
8260
private Context getAppContext() {
8361
return this.reactContext.getApplicationContext();
8462
}

android/src/main/java/com/incomingcall/UnlockScreenActivity.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
import android.media.MediaPlayer;
1616
import android.provider.Settings;
1717
import java.util.List;
18+
import java.util.Timer;
19+
import java.util.TimerTask;
20+
1821
import android.app.Activity;
1922

2023
import androidx.appcompat.app.AppCompatActivity;
@@ -36,16 +39,29 @@ public class UnlockScreenActivity extends AppCompatActivity implements UnlockScr
3639
private TextView tvName;
3740
private TextView tvInfo;
3841
private ImageView ivAvatar;
42+
private Integer timeout = 0;
3943
private String uuid = "";
4044
static boolean active = false;
4145
private static Vibrator v = (Vibrator) IncomingCallModule.reactContext.getSystemService(Context.VIBRATOR_SERVICE);
4246
private long[] pattern = {0, 1000, 800};
43-
private static MediaPlayer player = MediaPlayer.create(IncomingCallModule.reactContext.getApplicationContext(), Settings.System.DEFAULT_RINGTONE_URI);
47+
private static MediaPlayer player = MediaPlayer.create(IncomingCallModule.reactContext, Settings.System.DEFAULT_RINGTONE_URI);
4448
private static Activity fa;
49+
private Timer timer;
50+
4551

4652
@Override
4753
public void onStart() {
4854
super.onStart();
55+
if (this.timeout > 0) {
56+
this.timer = new Timer();
57+
this.timer.schedule(new TimerTask() {
58+
@Override
59+
public void run() {
60+
// this code will be executed after timeout seconds
61+
dismissIncoming();
62+
}
63+
}, timeout);
64+
}
4965
active = true;
5066
}
5167

@@ -86,6 +102,10 @@ protected void onCreate(Bundle savedInstanceState) {
86102
Picasso.get().load(avatar).transform(new CircleTransform()).into(ivAvatar);
87103
}
88104
}
105+
if (bundle.containsKey("timeout")) {
106+
this.timeout = bundle.getInt("timeout");
107+
}
108+
else this.timeout = 0;
89109
}
90110

91111
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
@@ -130,17 +150,20 @@ public void onBackPressed() {
130150
// Dont back
131151
}
132152

133-
public static void dismissIncoming() {
153+
public void dismissIncoming() {
134154
v.cancel();
135155
player.stop();
136156
player.prepareAsync();
137-
fa.finish();
157+
dismissDialing();
138158
}
139159

140160
private void acceptDialing() {
141161
WritableMap params = Arguments.createMap();
142162
params.putBoolean("accept", true);
143163
params.putString("uuid", uuid);
164+
if (timer != null){
165+
timer.cancel();
166+
}
144167
if (!IncomingCallModule.reactContext.hasCurrentActivity()) {
145168
params.putBoolean("isHeadless", true);
146169
}
@@ -165,6 +188,9 @@ private void dismissDialing() {
165188
WritableMap params = Arguments.createMap();
166189
params.putBoolean("accept", false);
167190
params.putString("uuid", uuid);
191+
if (timer != null) {
192+
timer.cancel();
193+
}
168194
if (!IncomingCallModule.reactContext.hasCurrentActivity()) {
169195
params.putBoolean("isHeadless", true);
170196
}

0 commit comments

Comments
 (0)