private void subscribeToEvents() {
    remotePcc.subscribeAudioStatusEvent(
        new IAudioStatusReceiver() {

          @Override
          public void onNewAudioStatus(
              final long estTimestamp,
              final int volume,
              final int totalTrackTime,
              final int currentTrackTime,
              final AudioDeviceCapabilities audioCapabilities,
              final AudioDeviceState audioState,
              final AudioRepeatState repeatState,
              final AudioShuffleState shuffleState) {
            runOnUiThread(
                new Runnable() {
                  @Override
                  public void run() {
                    tv_estTimestamp.setText(String.valueOf(estTimestamp));

                    tv_volume.setText(String.valueOf(volume));
                    tv_totalTrackTime.setText(String.valueOf(totalTrackTime));
                    tv_currentTrackTime.setText(String.valueOf(currentTrackTime));
                    tv_audioState.setText(audioState.toString());
                    tv_repeatState.setText(repeatState.toString());
                    tv_shuffleState.setText(shuffleState.toString());

                    tv_customRepeatMode.setText(
                        String.valueOf(audioCapabilities.customRepeatModeSupport));
                    tv_customShuffleMode.setText(
                        String.valueOf(audioCapabilities.customShuffleModeSupport));
                  }
                });
          }
        });

    remotePcc.subscribeBatteryStatusEvent(
        new IBatteryStatusReceiver() {

          @Override
          public void onNewBatteryStatus(
              final long estTimestamp,
              EnumSet<EventFlag> eventFlags,
              final long cumulativeOperatingTime,
              final BigDecimal batteryVoltage,
              final BatteryStatus batteryStatus,
              final int cumulativeOperatingTimeResolution,
              int numberOfBatteries,
              int batteryIdentifier) {
            runOnUiThread(
                new Runnable() {
                  @Override
                  public void run() {
                    tv_estTimestamp.setText(String.valueOf(estTimestamp));

                    tv_cumulativeOperatingTime.setText(String.valueOf(cumulativeOperatingTime));
                    tv_batteryVoltage.setText(batteryVoltage.toPlainString());
                    tv_batteryStatus.setText(batteryStatus.toString());
                    tv_cumulativeOperatingTimeResolution.setText(
                        String.valueOf(cumulativeOperatingTimeResolution));
                  }
                });
          }
        });

    remotePcc.subscribeManufacturerIdentificationEvent(
        new IManufacturerIdentificationReceiver() {

          @Override
          public void onNewManufacturerIdentification(
              final long estTimestamp,
              final EnumSet<EventFlag> eventFlags,
              final int hardwareRevision,
              final int manufacturerID,
              final int modelNumber) {
            runOnUiThread(
                new Runnable() {
                  @Override
                  public void run() {
                    tv_estTimestamp.setText(String.valueOf(estTimestamp));

                    tv_hardwareRevision.setText(String.valueOf(hardwareRevision));
                    tv_manufacturerID.setText(String.valueOf(manufacturerID));
                    tv_modelNumber.setText(String.valueOf(modelNumber));
                  }
                });
          }
        });

    remotePcc.subscribeProductInformationEvent(
        new IProductInformationReceiver() {

          @Override
          public void onNewProductInformation(
              final long estTimestamp,
              final EnumSet<EventFlag> eventFlags,
              final int softwareRevision,
              final int supplementalSoftwareRevision,
              final long serialNumber) {
            runOnUiThread(
                new Runnable() {
                  @Override
                  public void run() {
                    tv_estTimestamp.setText(String.valueOf(estTimestamp));

                    tv_softwareRevision.setText(String.valueOf(softwareRevision));
                    tv_serialNumber.setText(String.valueOf(serialNumber));
                  }
                });
          }
        });
  }