4 Commits

Author SHA1 Message Date
  chenbin f4c6060cbc Merge branch 'test' 3 years ago
  chenbin 7961a6b462 带自动接听 3 years ago
  chenbin 3b28584e4c 不带自动接听 3 years ago
  chenbin eb6c7ddab8 fix 3 years ago

+ 9
- 5
app/src/main/java/com/tianrun/sipcall/SipEngine.java View File

@@ -336,14 +336,18 @@ public class SipEngine implements BluetelInterface {
336 336
      *
337 337
      * @throws Exception
338 338
      */
339
-    public void PlaydefaultCallMediaPlayer(Context context) {
339
+    public Ringtone PlaydefaultCallMediaPlayer(Context context) {
340 340
         Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
341 341
         Ringtone r = RingtoneManager.getRingtone(context, notification);
342 342
         r.play();
343
+        return r;
343 344
     }
344
-    public void StopdefaultCallMediaPlayer(Context context)  {
345
-        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
346
-        Ringtone r = RingtoneManager.getRingtone(context, notification);
347
-        r.stop();
345
+    public void StopdefaultCallMediaPlayer(Ringtone r)  {
346
+//        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
347
+//        Ringtone r = RingtoneManager.getRingtone(context, notification);
348
+//        r.stop();
349
+        if(r != null) {
350
+            r.stop();
351
+        }
348 352
     }
349 353
 }

+ 42
- 9
app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java View File

@@ -6,6 +6,7 @@ import android.app.Activity;
6 6
 import android.app.KeyguardManager;
7 7
 import android.content.Context;
8 8
 import android.content.Intent;
9
+import android.media.Ringtone;
9 10
 import android.os.Bundle;
10 11
 import android.os.Handler;
11 12
 import android.os.Message;
@@ -63,6 +64,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
63 64
     private  boolean selfCall = false;
64 65
     private boolean VIDEOSTATE = false;
65 66
     public static Intent incallIntent;
67
+    private Ringtone ringtone;
66 68
 
67 69
     public String[] screenTyps = {"经典模式", "均分模式", "远程全屏", "本地全屏"};
68 70
 
@@ -186,20 +188,35 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
186 188
         super.onResume();
187 189
         if (callstate.equals("来电")) {
188 190
             incall_answer.setVisibility(View.VISIBLE);
191
+            ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
189 192
         } else {
190 193
             incall_answer.setVisibility(View.GONE);
191 194
         }
192 195
         show.setText(callnumber + callstate);
193
-        if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
194
-            incall_answer.setVisibility(View.GONE);
195
-            SipEngine.getInstance().answer(callid);
196
-            SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
197
-        } else {
198
-            SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
196
+        if (incall_answer.getVisibility() == View.VISIBLE){
197
+            if(selfCall) {
198
+//                incall_answer.setVisibility(View.GONE);
199
+//                SipEngine.getInstance().answer(callid);
200
+//                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
201
+//                ringtone = null;
202
+                answer();
203
+            } else {
204
+                AutoAnwser();
205
+            }
199 206
         }
200 207
 
201 208
     }
202 209
 
210
+    static void  AutoAnwser() {
211
+        handler_CallActivity.postDelayed(doAutoAnwser, 5000);
212
+    }
213
+    static Runnable doAutoAnwser = new Runnable() {
214
+        @Override
215
+        public void run() {
216
+            CONS.SENDMESSAGETO(handler_CallActivity, -2, null);
217
+        }
218
+    };
219
+
203 220
     @Override
204 221
     protected void onPause() {
205 222
         super.onPause();
@@ -210,7 +227,10 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
210 227
     protected void onDestroy() {
211 228
         stopVideoStream(true);
212 229
         super.onDestroy();
230
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
231
+        ringtone = null;
213 232
         SipEngine.getInstance().hangup(callid);
233
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
214 234
         handler_CallActivity = null;
215 235
         if (wakeLock != null) {
216 236
             wakeLock.release();
@@ -275,6 +295,9 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
275 295
                 stopVideoStream(true);
276 296
                 finish();
277 297
                 break;
298
+            case -2:
299
+                answer();
300
+                break;
278 301
         }
279 302
         return true;
280 303
     }
@@ -334,13 +357,23 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
334 357
                 }
335 358
                 break;
336 359
             case R.id.incall_answer:
337
-                incall_answer.setVisibility(View.GONE);
338
-                SipEngine.getInstance().answer(callid);
339
-                SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
360
+//                incall_answer.setVisibility(View.GONE);
361
+//                SipEngine.getInstance().answer(callid);
362
+//                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
363
+//                ringtone = null;
364
+                answer();
340 365
                 break;
341 366
         }
342 367
     }
343 368
 
369
+    public  void  answer() {
370
+        incall_answer.setVisibility(View.GONE);
371
+        SipEngine.getInstance().answer(callid);
372
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
373
+        ringtone = null;
374
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
375
+    }
376
+
344 377
 
345 378
     public void ShowVideoView(boolean show) {
346 379
         if (show) {

+ 40
- 12
app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java View File

@@ -7,6 +7,7 @@ import android.content.Context;
7 7
 import android.content.DialogInterface;
8 8
 import android.content.Intent;
9 9
 import android.graphics.Color;
10
+import android.media.Ringtone;
10 11
 import android.os.Bundle;
11 12
 import android.os.Handler;
12 13
 import android.os.Message;
@@ -85,6 +86,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
85 86
     private  boolean selfCall = false;
86 87
     private boolean VIDEOSTATE = false;
87 88
     public static Intent incallIntent;
89
+    private Ringtone ringtone;
90
+
88 91
 
89 92
     private  boolean isinited = false;
90 93
 
@@ -512,6 +515,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
512 515
             incall_answer.setVisibility(View.VISIBLE);
513 516
             incall_mute.setVisibility(View.GONE);
514 517
             incall_muteVideo.setVisibility(View.GONE);
518
+            ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
515 519
         } else {
516 520
             incall_answer.setVisibility(View.GONE);
517 521
             if (DBUser.mySelf != null && DBUser.mySelf.isManager) {
@@ -525,15 +529,28 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
525 529
         }
526 530
         show.setText(callnumber + callstate);
527 531
         //控件显示号码,来电,去电,通话中...
528
-        if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
529
-            incall_answer.setVisibility(View.GONE);
530
-            SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
531
-            SipEngine.getInstance().answer(callid);
532
-        } else {
533
-            SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
532
+        if (incall_answer.getVisibility() == View.VISIBLE ) {
533
+            if(selfCall) {
534
+//                incall_answer.setVisibility(View.GONE);
535
+//                SipEngine.getInstance().answer(callid);
536
+//                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
537
+//                ringtone = null;
538
+                answer();
539
+            } else {
540
+                AutoAnwser();
541
+            }
534 542
         }
535 543
 
536 544
     }
545
+    static void  AutoAnwser() {
546
+        handler_CallActivity.postDelayed(doAutoAnwser, 5000);
547
+    }
548
+    static Runnable doAutoAnwser = new Runnable() {
549
+        @Override
550
+        public void run() {
551
+            CONS.SENDMESSAGETO(handler_CallActivity, -2, null);
552
+        }
553
+    };
537 554
 
538 555
     @Override
539 556
     protected void onPause() {
@@ -545,8 +562,11 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
545 562
     protected void onDestroy() {
546 563
         stopVideoStream(true);
547 564
         super.onDestroy();
565
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
566
+        ringtone = null;
548 567
         SipEngine.getInstance().hangup(callid);
549 568
         handler_CallActivity.removeCallbacks(getMemberRunner);
569
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
550 570
         handler_CallActivity = null;
551 571
         if (wakeLock != null) {
552 572
             wakeLock.release();
@@ -621,6 +641,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
621 641
             case  -1:
622 642
                 getMembers();
623 643
                 break;
644
+            case -2:
645
+                answer();
646
+                break;
624 647
         }
625 648
         return true;
626 649
     }
@@ -685,12 +708,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
685 708
                 }
686 709
                 break;
687 710
             case R.id.incall_answer:
688
-                incall_answer.setVisibility(View.GONE);
689
-                if (DBUser.mySelf != null && DBUser.mySelf.isManager) {
690
-                    incall_mute.setVisibility(View.VISIBLE);
691
-                }
692
-                SipEngine.getInstance().answer(callid);
693
-                SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
711
+                answer();
694 712
                 break;
695 713
             case R.id.incall_mute:
696 714
                 muteAll(v);
@@ -700,6 +718,16 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
700 718
                 break;
701 719
         }
702 720
     }
721
+    public  void  answer() {
722
+        incall_answer.setVisibility(View.GONE);
723
+        if (DBUser.mySelf != null && DBUser.mySelf.isManager) {
724
+            incall_mute.setVisibility(View.VISIBLE);
725
+        }
726
+        SipEngine.getInstance().answer(callid);
727
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
728
+        ringtone = null;
729
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
730
+    }
703 731
 
704 732
     public void muteAll(View view) {
705 733
         QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,

Loading…
Cancel
Save