| /* |
| * Copyright (c) 2013 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.webrtc.webrtcdemo; |
| |
| import android.app.Activity; |
| import android.app.Fragment; |
| import android.os.Bundle; |
| import android.util.Log; |
| import android.view.LayoutInflater; |
| import android.view.SurfaceView; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.Button; |
| import android.widget.LinearLayout; |
| import android.widget.TextView; |
| |
| public class MainMenuFragment extends Fragment implements MediaEngineObserver { |
| |
| private String TAG; |
| private MenuStateProvider stateProvider; |
| |
| private Button btStartStopCall; |
| private TextView tvStats; |
| |
| @Override |
| public View onCreateView(LayoutInflater inflater, ViewGroup container, |
| Bundle savedInstanceState) { |
| View v = inflater.inflate(R.layout.mainmenu, container, false); |
| |
| TAG = getResources().getString(R.string.tag); |
| |
| Button btStats = (Button) v.findViewById(R.id.btStats); |
| boolean stats = getResources().getBoolean(R.bool.stats_enabled_default); |
| enableStats(btStats, stats); |
| btStats.setOnClickListener(new View.OnClickListener() { |
| public void onClick(View button) { |
| boolean turnOnStats = ((Button) button).getText().equals( |
| getResources().getString(R.string.statsOn)); |
| enableStats((Button) button, turnOnStats); |
| } |
| }); |
| tvStats = (TextView) v.findViewById(R.id.tvStats); |
| |
| btStartStopCall = (Button) v.findViewById(R.id.btStartStopCall); |
| btStartStopCall.setText(getEngine().isRunning() ? |
| R.string.stopCall : |
| R.string.startCall); |
| btStartStopCall.setOnClickListener(new View.OnClickListener() { |
| public void onClick(View button) { |
| toggleStart(); |
| } |
| }); |
| return v; |
| } |
| |
| @Override |
| public void onAttach(Activity activity) { |
| super.onAttach(activity); |
| |
| // This makes sure that the container activity has implemented |
| // the callback interface. If not, it throws an exception. |
| try { |
| stateProvider = (MenuStateProvider) activity; |
| } catch (ClassCastException e) { |
| throw new ClassCastException(activity + |
| " must implement MenuStateProvider"); |
| } |
| } |
| |
| // tvStats need to be updated on the UI thread. |
| public void newStats(final String stats) { |
| getActivity().runOnUiThread(new Runnable() { |
| public void run() { |
| tvStats.setText(stats); |
| } |
| }); |
| } |
| |
| private MediaEngine getEngine() { |
| return stateProvider.getEngine(); |
| } |
| |
| private void enableStats(Button btStats, boolean enable) { |
| if (enable) { |
| getEngine().setObserver(this); |
| } else { |
| getEngine().setObserver(null); |
| // Clear old stats text by posting empty stats. |
| newStats(""); |
| } |
| // If stats was true it was just turned on. This means that |
| // clicking the button again should turn off stats. |
| btStats.setText(enable ? R.string.statsOff : R.string.statsOn); |
| } |
| |
| |
| public void toggleStart() { |
| if (getEngine().isRunning()) { |
| stopAll(); |
| } else { |
| startCall(); |
| } |
| btStartStopCall.setText(getEngine().isRunning() ? |
| R.string.stopCall : |
| R.string.startCall); |
| } |
| |
| public void stopAll() { |
| getEngine().stop(); |
| } |
| |
| private void startCall() { |
| getEngine().start(); |
| } |
| } |