/*
|
* Copyright 2015 The WebRTC Project Authors. All rights reserved.
|
*
|
* Use of this source code is governed by a BSD-style license
|
* that can be found in the LICENSE file in the root of the source
|
* tree. An additional intellectual property rights grant can be found
|
* in the file PATENTS. All contributing project authors may
|
* be found in the AUTHORS file in the root of the source tree.
|
*/
|
|
package org.appspot.apprtc;
|
|
import android.app.Activity;
|
import android.app.Fragment;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.SystemClock;
|
import android.support.annotation.RequiresApi;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageButton;
|
import android.widget.SeekBar;
|
import android.widget.TextView;
|
|
import org.webrtc.RendererCommon.ScalingType;
|
|
/**
|
* Fragment for call control.
|
*/
|
public class CallFragment extends Fragment {
|
private TextView contactView;
|
private ImageButton cameraSwitchButton;
|
private ImageButton videoScalingButton;
|
private ImageButton toggleMuteButton;
|
private TextView captureFormatText;
|
private SeekBar captureFormatSlider;
|
private OnCallEvents callEvents;
|
private ScalingType scalingType;
|
private boolean videoCallEnabled = true;
|
|
@Override
|
public View onCreateView(
|
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
View controlView = inflater.inflate(R.layout.fragment_call, container, false);
|
|
// Create UI controls.
|
contactView = controlView.findViewById(R.id.contact_name_call);
|
ImageButton disconnectButton = controlView.findViewById(R.id.button_call_disconnect);
|
cameraSwitchButton = controlView.findViewById(R.id.button_call_switch_camera);
|
videoScalingButton = controlView.findViewById(R.id.button_call_scaling_mode);
|
toggleMuteButton = controlView.findViewById(R.id.button_call_toggle_mic);
|
captureFormatText = controlView.findViewById(R.id.capture_format_text_call);
|
captureFormatSlider = controlView.findViewById(R.id.capture_format_slider_call);
|
|
// Add buttons click events.
|
disconnectButton.setOnClickListener(new View.OnClickListener() {
|
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
|
@Override
|
public void onClick(View view) {
|
callEvents.onCallHangUp();
|
SystemClock.sleep(100);
|
getActivity().setResult(Activity.RESULT_CANCELED);
|
getActivity().finishAffinity();
|
ConnectActivity.connectActivity.finish();
|
//android.os.Process.killProcess(android.os.Process.myPid());
|
//System.exit(0);
|
}
|
});
|
|
cameraSwitchButton.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
callEvents.onCameraSwitch();
|
}
|
});
|
|
videoScalingButton.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
if (scalingType == ScalingType.SCALE_ASPECT_FILL) {
|
videoScalingButton.setBackgroundResource(R.drawable.ic_action_full_screen);
|
scalingType = ScalingType.SCALE_ASPECT_FIT;
|
} else {
|
videoScalingButton.setBackgroundResource(R.drawable.ic_action_return_from_full_screen);
|
scalingType = ScalingType.SCALE_ASPECT_FILL;
|
}
|
callEvents.onVideoScalingSwitch(scalingType);
|
}
|
});
|
scalingType = ScalingType.SCALE_ASPECT_FIT;
|
callEvents.onVideoScalingSwitch(scalingType);
|
toggleMuteButton.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
boolean enabled = callEvents.onToggleMic();
|
toggleMuteButton.setAlpha(enabled ? 1.0f : 0.3f);
|
}
|
});
|
|
return controlView;
|
}
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
|
boolean captureSliderEnabled = false;
|
Bundle args = getArguments();
|
if (args != null) {
|
String contactName = args.getString(CallActivity.EXTRA_ROOMID);
|
contactView.setText(contactName);
|
videoCallEnabled = args.getBoolean(CallActivity.EXTRA_VIDEO_CALL, true);
|
captureSliderEnabled = videoCallEnabled
|
&& args.getBoolean(CallActivity.EXTRA_VIDEO_CAPTUREQUALITYSLIDER_ENABLED, false);
|
}
|
if (!videoCallEnabled) {
|
cameraSwitchButton.setVisibility(View.INVISIBLE);
|
}
|
if (captureSliderEnabled) {
|
captureFormatSlider.setOnSeekBarChangeListener(
|
new CaptureQualityController(captureFormatText, callEvents));
|
} else {
|
captureFormatText.setVisibility(View.GONE);
|
captureFormatSlider.setVisibility(View.GONE);
|
}
|
}
|
|
// TODO(sakal): Replace with onAttach(Context) once we only support API level 23+.
|
@SuppressWarnings("deprecation")
|
@Override
|
public void onAttach(Activity activity) {
|
super.onAttach(activity);
|
callEvents = (OnCallEvents) activity;
|
}
|
|
/**
|
* Call control interface for container activity.
|
*/
|
public interface OnCallEvents {
|
void onCallHangUp();
|
|
void onCameraSwitch();
|
|
void onVideoScalingSwitch(ScalingType scalingType);
|
|
void onCaptureFormatChange(int width, int height, int framerate);
|
|
boolean onToggleMic();
|
}
|
}
|