Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java

Issue 2501983002: Adds basic Bluetooth support to AppRTCMobile (Closed)
Patch Set: Final comments from magjed@ Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 15 matching lines...) Expand all
26 import android.util.Log; 26 import android.util.Log;
27 import android.view.View; 27 import android.view.View;
28 import android.view.Window; 28 import android.view.Window;
29 import android.view.WindowManager; 29 import android.view.WindowManager;
30 import android.view.WindowManager.LayoutParams; 30 import android.view.WindowManager.LayoutParams;
31 import android.widget.Toast; 31 import android.widget.Toast;
32 import java.io.IOException; 32 import java.io.IOException;
33 import java.lang.RuntimeException; 33 import java.lang.RuntimeException;
34 import java.util.ArrayList; 34 import java.util.ArrayList;
35 import java.util.List; 35 import java.util.List;
36 import java.util.Set;
37 import org.appspot.apprtc.AppRTCAudioManager.AudioDevice;
38 import org.appspot.apprtc.AppRTCAudioManager.AudioManagerEvents;
36 import org.appspot.apprtc.AppRTCClient.RoomConnectionParameters; 39 import org.appspot.apprtc.AppRTCClient.RoomConnectionParameters;
37 import org.appspot.apprtc.AppRTCClient.SignalingParameters; 40 import org.appspot.apprtc.AppRTCClient.SignalingParameters;
38 import org.appspot.apprtc.PeerConnectionClient.DataChannelParameters; 41 import org.appspot.apprtc.PeerConnectionClient.DataChannelParameters;
39 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionParameters; 42 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionParameters;
40 import org.webrtc.Camera1Enumerator; 43 import org.webrtc.Camera1Enumerator;
41 import org.webrtc.Camera2Enumerator; 44 import org.webrtc.Camera2Enumerator;
42 import org.webrtc.CameraEnumerator; 45 import org.webrtc.CameraEnumerator;
43 import org.webrtc.EglBase; 46 import org.webrtc.EglBase;
44 import org.webrtc.FileVideoCapturer; 47 import org.webrtc.FileVideoCapturer;
45 import org.webrtc.IceCandidate; 48 import org.webrtc.IceCandidate;
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 return; 523 return;
521 } 524 }
522 callStartedTimeMs = System.currentTimeMillis(); 525 callStartedTimeMs = System.currentTimeMillis();
523 526
524 // Start room connection. 527 // Start room connection.
525 logAndToast(getString(R.string.connecting_to, roomConnectionParameters.roomU rl)); 528 logAndToast(getString(R.string.connecting_to, roomConnectionParameters.roomU rl));
526 appRtcClient.connectToRoom(roomConnectionParameters); 529 appRtcClient.connectToRoom(roomConnectionParameters);
527 530
528 // Create and audio manager that will take care of audio routing, 531 // Create and audio manager that will take care of audio routing,
529 // audio modes, audio device enumeration etc. 532 // audio modes, audio device enumeration etc.
530 audioManager = AppRTCAudioManager.create(this, new Runnable() { 533 audioManager = AppRTCAudioManager.create(this);
531 // This method will be called each time the audio state (number and 534 // Store existing audio settings and change audio mode to
532 // type of devices) has been changed. 535 // MODE_IN_COMMUNICATION for best possible VoIP performance.
536 Log.d(TAG, "Starting the audio manager...");
537 audioManager.start(new AudioManagerEvents() {
538 // This method will be called each time the number of available audio
539 // devices has changed.
533 @Override 540 @Override
534 public void run() { 541 public void onAudioDeviceChanged(
535 onAudioManagerChangedState(); 542 AudioDevice audioDevice, Set<AudioDevice> availableAudioDevices) {
543 onAudioManagerDevicesChanged(audioDevice, availableAudioDevices);
536 } 544 }
537 }); 545 });
538 // Store existing audio settings and change audio mode to
539 // MODE_IN_COMMUNICATION for best possible VoIP performance.
540 Log.d(TAG, "Initializing the audio manager...");
541 audioManager.init();
542 } 546 }
543 547
544 // Should be called from UI thread 548 // Should be called from UI thread
545 private void callConnected() { 549 private void callConnected() {
546 final long delta = System.currentTimeMillis() - callStartedTimeMs; 550 final long delta = System.currentTimeMillis() - callStartedTimeMs;
547 Log.i(TAG, "Call connected: delay=" + delta + "ms"); 551 Log.i(TAG, "Call connected: delay=" + delta + "ms");
548 if (peerConnectionClient == null || isError) { 552 if (peerConnectionClient == null || isError) {
549 Log.w(TAG, "Call is connected in closed or error state"); 553 Log.w(TAG, "Call is connected in closed or error state");
550 return; 554 return;
551 } 555 }
552 // Update video view. 556 // Update video view.
553 updateVideoView(); 557 updateVideoView();
554 // Enable statistics callback. 558 // Enable statistics callback.
555 peerConnectionClient.enableStatsEvents(true, STAT_CALLBACK_PERIOD); 559 peerConnectionClient.enableStatsEvents(true, STAT_CALLBACK_PERIOD);
556 } 560 }
557 561
558 private void onAudioManagerChangedState() { 562 // This method is called when the audio manager reports audio device change,
559 // TODO(henrika): disable video if AppRTCAudioManager.AudioDevice.EARPIECE 563 // e.g. from wired headset to speakerphone.
560 // is active. 564 private void onAudioManagerDevicesChanged(
565 final AudioDevice device, final Set<AudioDevice> availableDevices) {
566 Log.d(TAG, "onAudioManagerDevicesChanged: " + availableDevices + ", "
567 + "selected: " + device);
568 // TODO(henrika): add callback handler.
561 } 569 }
562 570
563 // Disconnect from remote resources, dispose of local resources, and exit. 571 // Disconnect from remote resources, dispose of local resources, and exit.
564 private void disconnect() { 572 private void disconnect() {
565 activityRunning = false; 573 activityRunning = false;
566 if (appRtcClient != null) { 574 if (appRtcClient != null) {
567 appRtcClient.disconnectFromRoom(); 575 appRtcClient.disconnectFromRoom();
568 appRtcClient = null; 576 appRtcClient = null;
569 } 577 }
570 if (peerConnectionClient != null) { 578 if (peerConnectionClient != null) {
571 peerConnectionClient.close(); 579 peerConnectionClient.close();
572 peerConnectionClient = null; 580 peerConnectionClient = null;
573 } 581 }
574 if (localRender != null) { 582 if (localRender != null) {
575 localRender.release(); 583 localRender.release();
576 localRender = null; 584 localRender = null;
577 } 585 }
578 if (videoFileRenderer != null) { 586 if (videoFileRenderer != null) {
579 videoFileRenderer.release(); 587 videoFileRenderer.release();
580 videoFileRenderer = null; 588 videoFileRenderer = null;
581 } 589 }
582 if (remoteRenderScreen != null) { 590 if (remoteRenderScreen != null) {
583 remoteRenderScreen.release(); 591 remoteRenderScreen.release();
584 remoteRenderScreen = null; 592 remoteRenderScreen = null;
585 } 593 }
586 if (audioManager != null) { 594 if (audioManager != null) {
587 audioManager.close(); 595 audioManager.stop();
588 audioManager = null; 596 audioManager = null;
589 } 597 }
590 if (iceConnected && !isError) { 598 if (iceConnected && !isError) {
591 setResult(RESULT_OK); 599 setResult(RESULT_OK);
592 } else { 600 } else {
593 setResult(RESULT_CANCELED); 601 setResult(RESULT_CANCELED);
594 } 602 }
595 finish(); 603 finish();
596 } 604 }
597 605
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 } 889 }
882 } 890 }
883 }); 891 });
884 } 892 }
885 893
886 @Override 894 @Override
887 public void onPeerConnectionError(final String description) { 895 public void onPeerConnectionError(final String description) {
888 reportError(description); 896 reportError(description);
889 } 897 }
890 } 898 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698