tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

HudFragment.java (2868B)


      1 /*
      2 *  Copyright 2015 The WebRTC Project Authors. All rights reserved.
      3 *
      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
      6 *  tree. An additional intellectual property rights grant can be found
      7 *  in the file PATENTS.  All contributing project authors may
      8 *  be found in the AUTHORS file in the root of the source tree.
      9 */
     10 
     11 package org.appspot.apprtc;
     12 
     13 import android.app.Fragment;
     14 import android.os.Bundle;
     15 import android.view.LayoutInflater;
     16 import android.view.View;
     17 import android.view.ViewGroup;
     18 import android.widget.ImageButton;
     19 import android.widget.TextView;
     20 import org.webrtc.RTCStats;
     21 import org.webrtc.RTCStatsReport;
     22 
     23 /**
     24 * Fragment for HUD statistics display.
     25 */
     26 public class HudFragment extends Fragment {
     27  private TextView statView;
     28  private ImageButton toggleDebugButton;
     29  private boolean displayHud;
     30  private volatile boolean isRunning;
     31  private CpuMonitor cpuMonitor;
     32 
     33  @Override
     34  public View onCreateView(
     35      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     36    View controlView = inflater.inflate(R.layout.fragment_hud, container, false);
     37 
     38    // Create UI controls.
     39    statView = controlView.findViewById(R.id.hud_stat_call);
     40    toggleDebugButton = controlView.findViewById(R.id.button_toggle_debug);
     41 
     42    toggleDebugButton.setOnClickListener(new View.OnClickListener() {
     43      @Override
     44      public void onClick(View view) {
     45        if (displayHud) {
     46          statView.setVisibility(
     47              statView.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE);
     48        }
     49      }
     50    });
     51 
     52    return controlView;
     53  }
     54 
     55  @Override
     56  public void onStart() {
     57    super.onStart();
     58 
     59    Bundle args = getArguments();
     60    if (args != null) {
     61      displayHud = args.getBoolean(CallActivity.EXTRA_DISPLAY_HUD, false);
     62    }
     63    int visibility = displayHud ? View.VISIBLE : View.INVISIBLE;
     64    statView.setVisibility(View.INVISIBLE);
     65    toggleDebugButton.setVisibility(visibility);
     66    isRunning = true;
     67  }
     68 
     69  @Override
     70  public void onStop() {
     71    isRunning = false;
     72    super.onStop();
     73  }
     74 
     75  public void setCpuMonitor(CpuMonitor cpuMonitor) {
     76    this.cpuMonitor = cpuMonitor;
     77  }
     78 
     79  public void updateEncoderStatistics(final RTCStatsReport report) {
     80    if (!isRunning || !displayHud) {
     81      return;
     82    }
     83 
     84    StringBuilder sb = new StringBuilder();
     85 
     86    if (cpuMonitor != null) {
     87      sb.append("CPU%: ")
     88          .append(cpuMonitor.getCpuUsageCurrent())
     89          .append("/")
     90          .append(cpuMonitor.getCpuUsageAverage())
     91          .append(". Freq: ")
     92          .append(cpuMonitor.getFrequencyScaleAverage())
     93          .append("\n");
     94    }
     95 
     96    for (RTCStats stat : report.getStatsMap().values()) {
     97      sb.append(stat.toString()).append("\n");
     98    }
     99 
    100    statView.setText(sb.toString());
    101  }
    102 }