chenbin 3 anni fa
parent
commit
eb6c7ddab8

+ 9
- 5
app/src/main/java/com/tianrun/sipcall/SipEngine.java Vedi 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
 }

+ 28
- 8
app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java Vedi 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;
@@ -50,6 +51,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
50 51
     private SMPercentFrameLayout localRenderLayout;
51 52
     private SMPercentFrameLayout remoteRenderLayout;
52 53
     private ImageButton incall_answer, incall_hangup;
54
+    private Ringtone ringtone;
53 55
     private TextView show;
54 56
     QMUITabSegment mTabSegment;
55 57
     ViewPager mContentViewPager;
@@ -191,15 +193,22 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
191 193
         }
192 194
         show.setText(callnumber + callstate);
193 195
         if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
194
-            incall_answer.setVisibility(View.GONE);
195
-            SipEngine.getInstance().answer(callid);
196
-            SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
196
+            answer();
197 197
         } else {
198
-            SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
198
+            ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
199
+            AutoAnwser(); //5秒后自动接听
199 200
         }
200
-
201 201
     }
202 202
 
203
+    static void  AutoAnwser(){
204
+        handler_CallActivity.postDelayed(doAutoAnwser, 5000);
205
+    }
206
+    static Runnable doAutoAnwser = new Runnable() {
207
+        @Override
208
+        public void run() {
209
+            CONS.SENDMESSAGETO(handler_CallActivity, -2, null);
210
+        }
211
+    };
203 212
     @Override
204 213
     protected void onPause() {
205 214
         super.onPause();
@@ -211,11 +220,14 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
211 220
         stopVideoStream(true);
212 221
         super.onDestroy();
213 222
         SipEngine.getInstance().hangup(callid);
223
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
214 224
         handler_CallActivity = null;
215 225
         if (wakeLock != null) {
216 226
             wakeLock.release();
217 227
             wakeLock = null;
218 228
         }
229
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
230
+        ringtone = null;
219 231
     }
220 232
 
221 233
     /**
@@ -275,6 +287,9 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
275 287
                 stopVideoStream(true);
276 288
                 finish();
277 289
                 break;
290
+            case -2:
291
+                answer();
292
+                break;
278 293
         }
279 294
         return true;
280 295
     }
@@ -332,15 +347,20 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
332 347
                 if (SipEngine.callPagesConfig.size() == 0) {
333 348
                     finish();
334 349
                 }
350
+                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
335 351
                 break;
336 352
             case R.id.incall_answer:
337
-                incall_answer.setVisibility(View.GONE);
338
-                SipEngine.getInstance().answer(callid);
339
-                SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
353
+                answer();
340 354
                 break;
341 355
         }
342 356
     }
343 357
 
358
+    public  void  answer(){
359
+        incall_answer.setVisibility(View.GONE);
360
+        SipEngine.getInstance().answer(callid);
361
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
362
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
363
+    }
344 364
 
345 365
     public void ShowVideoView(boolean show) {
346 366
         if (show) {

+ 32
- 10
app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java Vedi 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;
@@ -87,6 +88,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
87 88
     public static Intent incallIntent;
88 89
 
89 90
     private  boolean isinited = false;
91
+    private Ringtone ringtone;
90 92
 
91 93
     TrAdapter adapterUser;
92 94
 
@@ -526,14 +528,22 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
526 528
         show.setText(callnumber + callstate);
527 529
         //控件显示号码,来电,去电,通话中...
528 530
         if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
529
-            incall_answer.setVisibility(View.GONE);
530
-            SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
531
-            SipEngine.getInstance().answer(callid);
531
+            answer();
532 532
         } else {
533
-            SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
533
+            ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
534
+            AutoAnwser(); //5秒后自动接听
534 535
         }
536
+    }
535 537
 
538
+    static void  AutoAnwser(){
539
+        handler_CallActivity.postDelayed(doAutoAnwser, 5000);
536 540
     }
541
+    static Runnable doAutoAnwser = new Runnable() {
542
+        @Override
543
+        public void run() {
544
+            CONS.SENDMESSAGETO(handler_CallActivity, -2, null);
545
+        }
546
+    };
537 547
 
538 548
     @Override
539 549
     protected void onPause() {
@@ -547,12 +557,15 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
547 557
         super.onDestroy();
548 558
         SipEngine.getInstance().hangup(callid);
549 559
         handler_CallActivity.removeCallbacks(getMemberRunner);
560
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
550 561
         handler_CallActivity = null;
551 562
         if (wakeLock != null) {
552 563
             wakeLock.release();
553 564
             wakeLock = null;
554 565
         }
555 566
 
567
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
568
+        ringtone = null;
556 569
     }
557 570
 
558 571
     /**
@@ -621,6 +634,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
621 634
             case  -1:
622 635
                 getMembers();
623 636
                 break;
637
+            case  -2:
638
+                answer();
639
+                break;
624 640
         }
625 641
         return true;
626 642
     }
@@ -683,14 +699,10 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
683 699
                 if (SipEngine.callPagesConfig.size() == 0) {
684 700
                     finish();
685 701
                 }
702
+                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
686 703
                 break;
687 704
             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);
705
+                answer();
694 706
                 break;
695 707
             case R.id.incall_mute:
696 708
                 muteAll(v);
@@ -701,6 +713,16 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
701 713
         }
702 714
     }
703 715
 
716
+    public  void  answer() {
717
+        incall_answer.setVisibility(View.GONE);
718
+        if (DBUser.mySelf != null && DBUser.mySelf.isManager) {
719
+            incall_mute.setVisibility(View.VISIBLE);
720
+        }
721
+        SipEngine.getInstance().answer(callid);
722
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
723
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
724
+    }
725
+
704 726
     public void muteAll(View view) {
705 727
         QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
706 728
                 QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),

Loading…
Annulla
Salva