package com.apigee.sdkexplorer; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.RadioButton; import android.widget.SeekBar; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.SeekBar.OnSeekBarChangeListener; import com.apigee.sdkexplorer.R; import com.apigee.sdk.apm.android.Log; public class LogsFragment extends Fragment { public static final int modeLogger = 0; public static final int modeCrash = 1; public static final int logLevelVerbose = 0; public static final int logLevelDebug = 1; public static final int logLevelInfo = 2; public static final int logLevelWarn = 3; public static final int logLevelError = 4; public static final int logLevelAssert = 5; public static String tagVerbose = "Demo Log Verbose"; public static String tagDebug = "Demo Log Debug"; public static String tagInfo = "Demo Log Info"; public static String tagWarn = "Demo Log Warn"; public static String tagError = "Demo Log Error"; public static String tagAssert = "Demo Log Assert"; private Activity activity; private RadioButton radioLogs; private RadioButton radioCrash; private SeekBar seekBarLogLevel; private TextView textViewLogLevel; private TextView helpTextLog; private TextView textViewCrashExplain; private TextView noticeTextCrash; private TextView helpTextCrash; private TextView descriptionTextCrash; private EditText editTextLogMessage; private Button buttonLog; private Button buttonCrash; private int modeIndex; private int logLevel; private String logLevelAsString; protected void setLogLevelAsStringValue() { String logLevelValue; switch(logLevel) { case logLevelVerbose: logLevelValue = getString(R.string.logLevelVerbose); break; case logLevelDebug: logLevelValue = getString(R.string.logLevelDebug); break; case logLevelInfo: logLevelValue = getString(R.string.logLevelInfo); break; case logLevelWarn: logLevelValue = getString(R.string.logLevelWarn); break; case logLevelError: logLevelValue = getString(R.string.logLevelError); break; case logLevelAssert: logLevelValue = getString(R.string.logLevelAssert); break; default: logLevelValue = ""; break; } logLevelAsString = getString(R.string.lblLogLevelPrefix) + " " + logLevelValue; textViewLogLevel.setText(logLevelAsString); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.logs_layout, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); activity = getActivity(); radioLogs = (RadioButton) activity.findViewById(R.id.radio_logger); radioCrash = (RadioButton) activity.findViewById(R.id.radio_crash); seekBarLogLevel = (SeekBar) activity.findViewById(R.id.seekBarLogLevel); textViewLogLevel = (TextView) activity.findViewById(R.id.textViewLogLevel); textViewCrashExplain = (TextView) activity.findViewById(R.id.textViewCrashExplain); editTextLogMessage = (EditText) activity.findViewById(R.id.editTextLogMessage); buttonLog = (Button) activity.findViewById(R.id.buttonLog); buttonCrash = (Button) activity.findViewById(R.id.buttonCrash); helpTextLog = (TextView) activity.findViewById(R.id.helpTextLog); noticeTextCrash = (TextView) activity.findViewById(R.id.noticeTextCrash); helpTextCrash = (TextView) activity.findViewById(R.id.helpTextCrash); descriptionTextCrash = (TextView) activity.findViewById(R.id.descriptionTextCrash); modeIndex = modeLogger; logLevel = logLevelVerbose; setLogLevelAsStringValue(); radioLogs.setSelected(true); radioCrash.setSelected(false); modeChanged(); radioLogs.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { modeIndex = modeLogger; modeChanged(); } }); radioCrash.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { modeIndex = modeCrash; modeChanged(); } }); seekBarLogLevel.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar v, int progress, boolean isUser) { if( (progress >= logLevelVerbose) && (progress <= logLevelAssert) ) { logLevel = progress; setLogLevelAsStringValue(); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); buttonLog.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String messageToLog = editTextLogMessage.getText().toString().trim(); if( messageToLog.length() > 0 ) { switch( logLevel ) { case logLevelVerbose: // verbose Log.v(tagVerbose,messageToLog); break; case logLevelDebug: // debug Log.d(tagDebug,messageToLog); break; case logLevelInfo: // info Log.i(tagInfo,messageToLog); break; case logLevelWarn: // warn Log.w(tagWarn,messageToLog); break; case logLevelError: // error Log.e(tagError,messageToLog); break; case logLevelAssert: // assert Log.wtf(tagAssert,messageToLog); break; } editTextLogMessage.setText(""); } } }); buttonCrash.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { forceCrash(); } }); } public void forceCrash() { //**************************************** // force a crash!!! //**************************************** String s = null; s.trim(); // here's the crash!!! } public void modeChanged() { if( modeIndex == modeLogger ) { // logs seekBarLogLevel.setVisibility(View.VISIBLE); textViewLogLevel.setVisibility(View.VISIBLE); editTextLogMessage.setVisibility(View.VISIBLE); buttonLog.setVisibility(View.VISIBLE); helpTextLog.setVisibility(View.VISIBLE); buttonCrash.setVisibility(View.GONE); textViewCrashExplain.setVisibility(View.GONE); noticeTextCrash.setVisibility(View.GONE); helpTextCrash.setVisibility(View.GONE); descriptionTextCrash.setVisibility(View.GONE); } else { // crash seekBarLogLevel.setVisibility(View.GONE); textViewLogLevel.setVisibility(View.GONE); editTextLogMessage.setVisibility(View.GONE); buttonLog.setVisibility(View.GONE); helpTextLog.setVisibility(View.GONE); buttonCrash.setVisibility(View.VISIBLE); textViewCrashExplain.setVisibility(View.VISIBLE); noticeTextCrash.setVisibility(View.VISIBLE); helpTextCrash.setVisibility(View.VISIBLE); descriptionTextCrash.setVisibility(View.VISIBLE); } } }