Browse Source

fix

master
chenbin 3 years ago
parent
commit
eb6c7ddab8

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

336
      *
336
      *
337
      * @throws Exception
337
      * @throws Exception
338
      */
338
      */
339
-    public void PlaydefaultCallMediaPlayer(Context context) {
339
+    public Ringtone PlaydefaultCallMediaPlayer(Context context) {
340
         Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
340
         Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
341
         Ringtone r = RingtoneManager.getRingtone(context, notification);
341
         Ringtone r = RingtoneManager.getRingtone(context, notification);
342
         r.play();
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 View File

6
 import android.app.KeyguardManager;
6
 import android.app.KeyguardManager;
7
 import android.content.Context;
7
 import android.content.Context;
8
 import android.content.Intent;
8
 import android.content.Intent;
9
+import android.media.Ringtone;
9
 import android.os.Bundle;
10
 import android.os.Bundle;
10
 import android.os.Handler;
11
 import android.os.Handler;
11
 import android.os.Message;
12
 import android.os.Message;
50
     private SMPercentFrameLayout localRenderLayout;
51
     private SMPercentFrameLayout localRenderLayout;
51
     private SMPercentFrameLayout remoteRenderLayout;
52
     private SMPercentFrameLayout remoteRenderLayout;
52
     private ImageButton incall_answer, incall_hangup;
53
     private ImageButton incall_answer, incall_hangup;
54
+    private Ringtone ringtone;
53
     private TextView show;
55
     private TextView show;
54
     QMUITabSegment mTabSegment;
56
     QMUITabSegment mTabSegment;
55
     ViewPager mContentViewPager;
57
     ViewPager mContentViewPager;
191
         }
193
         }
192
         show.setText(callnumber + callstate);
194
         show.setText(callnumber + callstate);
193
         if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
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
         } else {
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
     @Override
212
     @Override
204
     protected void onPause() {
213
     protected void onPause() {
205
         super.onPause();
214
         super.onPause();
211
         stopVideoStream(true);
220
         stopVideoStream(true);
212
         super.onDestroy();
221
         super.onDestroy();
213
         SipEngine.getInstance().hangup(callid);
222
         SipEngine.getInstance().hangup(callid);
223
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
214
         handler_CallActivity = null;
224
         handler_CallActivity = null;
215
         if (wakeLock != null) {
225
         if (wakeLock != null) {
216
             wakeLock.release();
226
             wakeLock.release();
217
             wakeLock = null;
227
             wakeLock = null;
218
         }
228
         }
229
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
230
+        ringtone = null;
219
     }
231
     }
220
 
232
 
221
     /**
233
     /**
275
                 stopVideoStream(true);
287
                 stopVideoStream(true);
276
                 finish();
288
                 finish();
277
                 break;
289
                 break;
290
+            case -2:
291
+                answer();
292
+                break;
278
         }
293
         }
279
         return true;
294
         return true;
280
     }
295
     }
332
                 if (SipEngine.callPagesConfig.size() == 0) {
347
                 if (SipEngine.callPagesConfig.size() == 0) {
333
                     finish();
348
                     finish();
334
                 }
349
                 }
350
+                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
335
                 break;
351
                 break;
336
             case R.id.incall_answer:
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
                 break;
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
     public void ShowVideoView(boolean show) {
365
     public void ShowVideoView(boolean show) {
346
         if (show) {
366
         if (show) {

+ 32
- 10
app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java View File

7
 import android.content.DialogInterface;
7
 import android.content.DialogInterface;
8
 import android.content.Intent;
8
 import android.content.Intent;
9
 import android.graphics.Color;
9
 import android.graphics.Color;
10
+import android.media.Ringtone;
10
 import android.os.Bundle;
11
 import android.os.Bundle;
11
 import android.os.Handler;
12
 import android.os.Handler;
12
 import android.os.Message;
13
 import android.os.Message;
87
     public static Intent incallIntent;
88
     public static Intent incallIntent;
88
 
89
 
89
     private  boolean isinited = false;
90
     private  boolean isinited = false;
91
+    private Ringtone ringtone;
90
 
92
 
91
     TrAdapter adapterUser;
93
     TrAdapter adapterUser;
92
 
94
 
526
         show.setText(callnumber + callstate);
528
         show.setText(callnumber + callstate);
527
         //控件显示号码,来电,去电,通话中...
529
         //控件显示号码,来电,去电,通话中...
528
         if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
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
         } else {
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
     @Override
548
     @Override
539
     protected void onPause() {
549
     protected void onPause() {
547
         super.onDestroy();
557
         super.onDestroy();
548
         SipEngine.getInstance().hangup(callid);
558
         SipEngine.getInstance().hangup(callid);
549
         handler_CallActivity.removeCallbacks(getMemberRunner);
559
         handler_CallActivity.removeCallbacks(getMemberRunner);
560
+        handler_CallActivity.removeCallbacks(doAutoAnwser);
550
         handler_CallActivity = null;
561
         handler_CallActivity = null;
551
         if (wakeLock != null) {
562
         if (wakeLock != null) {
552
             wakeLock.release();
563
             wakeLock.release();
553
             wakeLock = null;
564
             wakeLock = null;
554
         }
565
         }
555
 
566
 
567
+        SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
568
+        ringtone = null;
556
     }
569
     }
557
 
570
 
558
     /**
571
     /**
621
             case  -1:
634
             case  -1:
622
                 getMembers();
635
                 getMembers();
623
                 break;
636
                 break;
637
+            case  -2:
638
+                answer();
639
+                break;
624
         }
640
         }
625
         return true;
641
         return true;
626
     }
642
     }
683
                 if (SipEngine.callPagesConfig.size() == 0) {
699
                 if (SipEngine.callPagesConfig.size() == 0) {
684
                     finish();
700
                     finish();
685
                 }
701
                 }
702
+                SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
686
                 break;
703
                 break;
687
             case R.id.incall_answer:
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
                 break;
706
                 break;
695
             case R.id.incall_mute:
707
             case R.id.incall_mute:
696
                 muteAll(v);
708
                 muteAll(v);
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
     public void muteAll(View view) {
726
     public void muteAll(View view) {
705
         QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
727
         QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
706
                 QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),
728
                 QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),

Loading…
Cancel
Save