Read QOS playback and device statistics

You can read playback and device statistics from the QOSProvider as often as needed.

The QOSProvider class provides various statistics, including information related to buffering, bit rates, frame rates, time data, and various other topics.

You can also get information about the device, such as manufacturer, model, operating system, SDK version, manufacturer's device ID, and screen size/densitymanufacturer, model, operating system, SDK version, and screen size/density.

  1. Instantiate a media player.
  2. Create a QOSProvider object and attach it to the media player.
    // Create Media Player.
    _mediaQosProvider = new QOSProvider(getActivity().getApplicationContext());
    _mediaQosProvider.attachMediaPlayer(_mediaPlayer);

    The QOSProvider constructor takes a player context, because it will need it to retrieve device-specific information such as the model, manufacturer, and operating system.

  3. Optionally read playback statistics.

    One solution for reading playback statistics would be to have a timer that periodically fetches the new QoS values from the QOSProvider. For example:

    _playbackClock = new Clock(PLAYBACK_CLOCK, 1000); // every 1 second
    _playbackClockEventListener = new Clock.ClockEventListener() {
    @Override
    public void onTick(String name) {
    getActivity().runOnUiThread(new Runnable() {
       @Override
       public void run() {
           PlaybackInformation playbackInformation = _mediaQosProvider.getPlaybackInformation(); 
           setQosItem("Frame rate", (int) playbackInformation.getFrameRate()); 
           setQosItem("Dropped frames", (int) 			playbackInformation.getDroppedFrameCount());
           setQosItem("Bitrate", (int) playbackInformation.getBitrate());
           setQosItem("Buffering time", (int) playbackInformation.getBufferingTime()); 
           setQosItem("Buffer length", (int) playbackInformation.getBufferLength()); 
           setQosItem("Buffer time", (int) 			playbackInformation.			getBufferTime()); 
           setQosItem("Empty buffer count", (int) playbackInformation.getEmptyBufferCount()); 
           setQosItem("Time to load", (int) playbackInformation.getTimeToLoad()); 
           setQosItem("Time to start", (int) playbackInformation.getTimeToStart());
       }
    });
    }
    };
  4. Optionally read device-specific information.
    // Show device information
    DeviceInformation deviceInfo = new QOSProvider(getApplicationContext()).getDeviceInformation(); 
    tv = (TextView) view.findViewById(R.id.aboutDeviceModel); 
    tv.setText(parent.getString(R.string.aboutDeviceModel) +				
    "	" + deviceInfo.getManufacturer() + " - " + deviceInfo.getModel());
    tv = (TextView) view.findViewById(R.id.aboutDeviceSoftware); 
    tv.setText(parent.getString(R.string.aboutDeviceSoftware) +	
    "	" + deviceInfo.getOS() + ", SDK: " + deviceInfo.getSDK());
    tv = (TextView) view.findViewById(R.id.aboutDeviceResolution); String orientation = parent.getResources().getConfiguration().orientation == 
    Configuration.ORIENTATION_LANDSCAPE ? "landscape" : "portrait"; 
    tv.setText(parent.getString(R.string.aboutDeviceResolution) +
    " " + deviceInfo.getWidthPixels() + "x" + deviceInfo.getHeightPixels() + 
    " (" + orientation + ")");