/* * 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.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; import org.webrtc.RTCStats; import org.webrtc.RTCStatsReport; /** * Fragment for HUD statistics display. */ public class HudFragment extends Fragment { private TextView statView; private ImageButton toggleDebugButton; private boolean displayHud; private volatile boolean isRunning; private CpuMonitor cpuMonitor; @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View controlView = inflater.inflate(R.layout.fragment_hud, container, false); // Create UI controls. statView = controlView.findViewById(R.id.hud_stat_call); toggleDebugButton = controlView.findViewById(R.id.button_toggle_debug); toggleDebugButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (displayHud) { statView.setVisibility( statView.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE); } } }); return controlView; } @Override public void onStart() { super.onStart(); Bundle args = getArguments(); if (args != null) { displayHud = args.getBoolean(CallActivity.EXTRA_DISPLAY_HUD, false); } int visibility = displayHud ? View.VISIBLE : View.INVISIBLE; statView.setVisibility(View.INVISIBLE); toggleDebugButton.setVisibility(visibility); isRunning = true; } @Override public void onStop() { isRunning = false; super.onStop(); } public void setCpuMonitor(CpuMonitor cpuMonitor) { this.cpuMonitor = cpuMonitor; } public void updateEncoderStatistics(final RTCStatsReport report) { if (!isRunning || !displayHud) { return; } StringBuilder sb = new StringBuilder(); if (cpuMonitor != null) { sb.append("CPU%: ") .append(cpuMonitor.getCpuUsageCurrent()) .append("/") .append(cpuMonitor.getCpuUsageAverage()) .append(". Freq: ") .append(cpuMonitor.getFrequencyScaleAverage()) .append("\n"); } for (RTCStats stat : report.getStatsMap().values()) { sb.append(stat.toString()).append("\n"); } statView.setText(sb.toString()); } }