139 lines
4.5 KiB
Java
139 lines
4.5 KiB
Java
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License
|
|
*/
|
|
|
|
package com.android.incallui;
|
|
|
|
import android.os.Bundle;
|
|
import android.support.annotation.NonNull;
|
|
import android.support.annotation.Nullable;
|
|
import android.support.v4.app.FragmentActivity;
|
|
import android.telecom.CallAudioState;
|
|
import com.android.dialer.logging.DialerImpression;
|
|
import com.android.dialer.logging.Logger;
|
|
import com.android.incallui.audiomode.AudioModeProvider;
|
|
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
|
|
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
|
|
import com.android.incallui.call.CallList;
|
|
import com.android.incallui.call.CallList.Listener;
|
|
import com.android.incallui.call.DialerCall;
|
|
import com.android.incallui.call.TelecomAdapter;
|
|
|
|
/** Simple activity that just shows the audio route selector fragment */
|
|
public class AudioRouteSelectorActivity extends FragmentActivity
|
|
implements AudioRouteSelectorPresenter, Listener {
|
|
|
|
@Override
|
|
protected void onCreate(@Nullable Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
AudioRouteSelectorDialogFragment.newInstance(AudioModeProvider.getInstance().getAudioState())
|
|
.show(getSupportFragmentManager(), AudioRouteSelectorDialogFragment.TAG);
|
|
|
|
CallList.getInstance().addListener(this);
|
|
}
|
|
|
|
@Override
|
|
public void onAudioRouteSelected(int audioRoute) {
|
|
TelecomAdapter.getInstance().setAudioRoute(audioRoute);
|
|
finish();
|
|
|
|
// Log the select action with audio route and call
|
|
DialerImpression.Type impressionType = null;
|
|
if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) {
|
|
impressionType = DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE;
|
|
} else if (audioRoute == CallAudioState.ROUTE_SPEAKER) {
|
|
impressionType = DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE;
|
|
} else if (audioRoute == CallAudioState.ROUTE_BLUETOOTH) {
|
|
impressionType = DialerImpression.Type.BUBBLE_V2_BLUETOOTH;
|
|
}
|
|
if (impressionType == null) {
|
|
return;
|
|
}
|
|
|
|
DialerCall call = getCall();
|
|
if (call != null) {
|
|
Logger.get(this)
|
|
.logCallImpression(impressionType, call.getUniqueCallId(), call.getTimeAddedMs());
|
|
} else {
|
|
Logger.get(this).logImpression(impressionType);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onAudioRouteSelectorDismiss() {
|
|
finish();
|
|
}
|
|
|
|
@Override
|
|
protected void onPause() {
|
|
super.onPause();
|
|
AudioRouteSelectorDialogFragment audioRouteSelectorDialogFragment =
|
|
(AudioRouteSelectorDialogFragment)
|
|
getSupportFragmentManager().findFragmentByTag(AudioRouteSelectorDialogFragment.TAG);
|
|
// If Android back button is pressed, the fragment is dismissed and removed. If home button is
|
|
// pressed, we have to manually dismiss the fragment here. The fragment is also removed when
|
|
// dismissed.
|
|
if (audioRouteSelectorDialogFragment != null) {
|
|
audioRouteSelectorDialogFragment.dismiss();
|
|
}
|
|
// We don't expect the activity to resume, except for orientation change.
|
|
if (!isChangingConfigurations()) {
|
|
finish();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
CallList.getInstance().removeListener(this);
|
|
super.onDestroy();
|
|
}
|
|
|
|
private DialerCall getCall() {
|
|
DialerCall dialerCall = CallList.getInstance().getOutgoingCall();
|
|
if (dialerCall == null) {
|
|
dialerCall = CallList.getInstance().getActiveOrBackgroundCall();
|
|
}
|
|
return dialerCall;
|
|
}
|
|
|
|
@Override
|
|
public void onDisconnect(DialerCall call) {
|
|
if (getCall() == null) {
|
|
finish();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onIncomingCall(DialerCall call) {}
|
|
|
|
@Override
|
|
public void onUpgradeToVideo(DialerCall call) {}
|
|
|
|
@Override
|
|
public void onSessionModificationStateChange(DialerCall call) {}
|
|
|
|
@Override
|
|
public void onCallListChange(CallList callList) {}
|
|
|
|
@Override
|
|
public void onWiFiToLteHandover(DialerCall call) {}
|
|
|
|
@Override
|
|
public void onHandoverToWifiFailed(DialerCall call) {}
|
|
|
|
@Override
|
|
public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
|
|
}
|