@Override
 public void onRmsChanged(float rmsdB) {
   onDataReceived(rmsdB);
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onRmsChanged(rmsdB);
   }
 }
 @Override
 public void onResults(Bundle results) {
   speechRecognizer.cancel();
   onDataReceived(minRmsDbValue);
   calmDownAndStopRendering();
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onResults(results);
   }
 }
 @Override
 public void onEvent(int eventType, Bundle params) {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onEvent(eventType, params);
   }
 }
 @Override
 public void onPartialResults(Bundle partialResults) {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onPartialResults(partialResults);
   }
 }
 @Override
 public void onError(int error) {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onError(error);
   }
 }
 @Override
 public void onEndOfSpeech() {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onEndOfSpeech();
   }
 }
 @Override
 public void onBufferReceived(byte[] buffer) {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onBufferReceived(buffer);
   }
 }
 @Override
 public void onReadyForSpeech(Bundle params) {
   if (innerRecognitionListener != null) {
     innerRecognitionListener.onReadyForSpeech(params);
   }
 }