<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nielsentest.mywikis.net/w/index.php?action=history&amp;feed=atom&amp;title=ExoPlayer_Plugin_Android</id>
	<title>ExoPlayer Plugin Android - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nielsentest.mywikis.net/w/index.php?action=history&amp;feed=atom&amp;title=ExoPlayer_Plugin_Android"/>
	<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;action=history"/>
	<updated>2026-04-15T21:44:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=1804&amp;oldid=prev</id>
		<title>Admin at 21:53, 20 October 2017</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=1804&amp;oldid=prev"/>
		<updated>2017-10-20T21:53:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:53, 20 October 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|SDKVersion=5.1.1.4&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|SDKVersion=5.1.1.4&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|supportedAdFrameworks=Google IMA&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|supportedAdFrameworks=Google IMA&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|downloadLink=https://engineeringportal.nielsen.com/w/downloads/digital/plugins/native/exoplayer/Nielsen-ExoPlayer-Plugin-Android-1.0.1.zip&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=1400&amp;oldid=prev</id>
		<title>Admin at 21:06, 31 August 2017</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=1400&amp;oldid=prev"/>
		<updated>2017-08-31T21:06:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:06, 31 August 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Nielsen App SDK Plugin for ExoPlayer''' interacts with Nielsen App SDK to provide with necessary data for streaming measurement based on Android ExoPlayer events received.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Nielsen App SDK Plugin for ExoPlayer''' interacts with Nielsen App SDK to provide with necessary data for streaming measurement based on Android ExoPlayer events received.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{PluginInfobox&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|pluginImage=AndroidLogoIcon&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|osImage=AndroidIcon&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|playerVersion=1.5.8&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|SDKVersion=5.1.1.4&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|supportedAdFrameworks=Google IMA&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Component Diagram ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Component Diagram ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=678&amp;oldid=prev</id>
		<title>Admin at 07:47, 25 May 2017</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=678&amp;oldid=prev"/>
		<updated>2017-05-25T07:47:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:47, 25 May 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Breadcrumb|DCR &amp;amp; DTVR}}  &lt;/ins&gt;{{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=550&amp;oldid=prev</id>
		<title>Admin at 08:01, 23 May 2017</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=550&amp;oldid=prev"/>
		<updated>2017-05-23T08:01:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:01, 23 May 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l55&quot;&gt;Line 55:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 55:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** The sample application source code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** The sample application source code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''Nielsen App SDK'''&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''Nielsen App SDK'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Download the Nielsen App SDK jar file from [[Downloads]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Download the Nielsen App SDK jar file from [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Digital &lt;/ins&gt;Downloads]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Follow the steps below, to include the Nielsen Plugin and sample app into the player application project using Android Studio&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Follow the steps below, to include the Nielsen Plugin and sample app into the player application project using Android Studio&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=513&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}} Category:Digital  '''Nielsen App SDK Plugin for ExoPlayer''' interacts with Nielsen App SDK to provide with ne...&quot;</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=ExoPlayer_Plugin_Android&amp;diff=513&amp;oldid=prev"/>
		<updated>2017-05-22T21:49:53Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}} &lt;a href=&quot;/wiki/Category:Digital&quot; title=&quot;Category:Digital&quot;&gt;Category:Digital&lt;/a&gt;  &amp;#039;&amp;#039;&amp;#039;Nielsen App SDK Plugin for ExoPlayer&amp;#039;&amp;#039;&amp;#039; interacts with Nielsen App SDK to provide with ne...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
'''Nielsen App SDK Plugin for ExoPlayer''' interacts with Nielsen App SDK to provide with necessary data for streaming measurement based on Android ExoPlayer events received.&lt;br /&gt;
&lt;br /&gt;
== Component Diagram ==&lt;br /&gt;
[[File:Exo-component.png|link=]]&lt;br /&gt;
&lt;br /&gt;
The component diagram above shows the interaction of the Plugin with various components.&lt;br /&gt;
&lt;br /&gt;
=== App ===&lt;br /&gt;
The App is the Android application implemented by the client. The application&lt;br /&gt;
* Initializes the PluginManager and creates the ExoPlayer.&lt;br /&gt;
* Creates Nielsen Data Provider objects to enable Nielsen monitoring.&lt;br /&gt;
* Interacts with the PluginManager to to create or destroy Nielsen Plugin instances.&lt;br /&gt;
&lt;br /&gt;
=== ExoPlayer ===&lt;br /&gt;
ExoPlayer is an application level media player for Android. It provides an alternative to Android's MediaPlayer API for playing audio and video both locally and over the Internet. For more details refer to the [https://developer.android.com/guide/topics/media/exoplayer.html|ExoPlayer project site].&lt;br /&gt;
&lt;br /&gt;
=== Nielsen Plugin Data provider ===&lt;br /&gt;
Plugin Data Provider component provides additional data to a Nielsen Plugin instances.&lt;br /&gt;
&lt;br /&gt;
=== Nielsen Content Data provider ===&lt;br /&gt;
Content Data Provider component provides additional data to a Nielsen Plugin instances regarding content.&lt;br /&gt;
&lt;br /&gt;
=== Nielsen Ads Data provider ===&lt;br /&gt;
Ads Data Provider component provides additional data to a Nielsen Plugin instances regarding advertisement.&lt;br /&gt;
&lt;br /&gt;
=== Advertisement Adapter ===&lt;br /&gt;
Advertisement Adapter is created by Plugin Manager. It enables advertisement monitoring.&lt;br /&gt;
&lt;br /&gt;
=== PluginManager ===&lt;br /&gt;
The Nielsen PluginManager manages the Nielsen Plugin instances which the application creates through the PluginManager. It handles interaction with the Plugin instances.&lt;br /&gt;
&lt;br /&gt;
=== Plugin ===&lt;br /&gt;
The Nielsen App SDK Plugin for ExoPlayer handles the ExoPlayer events and data from NielsenPluginDataProvider to make appropriate calls to the Nielsen AppSdk. It is a wrapper around the Nielsen AppSdk.&lt;br /&gt;
&lt;br /&gt;
=== Nielsen AppSdk ===&lt;br /&gt;
This is the Nielsen AppSDK which handles the content and ad measurement based on the information provided by the Plugin.&lt;br /&gt;
&lt;br /&gt;
== Plugin Implementation ==&lt;br /&gt;
=== Pre-requisites ===&lt;br /&gt;
* '''Nielsen SDK Configuration Form''': Complete this form to receive the appid(s). The information on this form is required to set up the Content Management System (CMS) mapping for the app.&lt;br /&gt;
* '''Nielsen App ID (appid)''': A unique ID that Nielsen assigns to the site/player.&lt;br /&gt;
* '''Nielsen App SDK Plugin for ExoPlayer''': The download link for the Plugin Packages are provided with the Nielsen appid(s).&lt;br /&gt;
* '''ExoPlayer SDK for Android'''&lt;br /&gt;
* '''Test Environment Validation''': Before moving the app into production, Nielsen must validate the Plugin's integration in a test environment.&lt;br /&gt;
&lt;br /&gt;
=== Initial Configuration ===&lt;br /&gt;
Before integrating the Plugin, make sure to download the following:&lt;br /&gt;
*'''Nielsen App SDK Plugin for ExoPlayer'''&lt;br /&gt;
*The Nielsen App SDK Plugin for ExoPlayer package includes&lt;br /&gt;
** Plugin Implementation Guide (this document)&lt;br /&gt;
** The Nielsen App SDK Plugin for ExoPlayer source code and&lt;br /&gt;
** The sample application source code.&lt;br /&gt;
*'''Nielsen App SDK'''&lt;br /&gt;
** Download the Nielsen App SDK jar file from [[Downloads]]&lt;br /&gt;
&lt;br /&gt;
Follow the steps below, to include the Nielsen Plugin and sample app into the player application project using Android Studio&lt;br /&gt;
* Unzip the Nielsen-ExoPlayer-Plugin-Android-1.0.1.zip file&lt;br /&gt;
* Build the Plugin's aar file as follows.&lt;br /&gt;
** Import the module NielsenExoPlayerPlugin into the project.&lt;br /&gt;
** Create a /libs directory in NielsenExoPlayerPlugin. Copy the Nielsen AppSDK jar file into /libs directory&lt;br /&gt;
** Add ExoPlayer as a dependency to the NielsenExoPlayerPlugin build.gradle file&lt;br /&gt;
** Build the NielsenExoPlayerPlugin module and this should produce the NielsenExoPlayerPlugin.aar file&lt;br /&gt;
* Build the NielsenSampleAppForExoPlayer with the NielsenExoPlayerPlugin&lt;br /&gt;
&lt;br /&gt;
=== Nielsen SampleApp ===&lt;br /&gt;
* Import the module NielsenSampleAppForExoPlayer into the project.&lt;br /&gt;
* Add ad related jar files in the /libs directory if required eg. For Google IMA add the gIMAsdk.jar file&lt;br /&gt;
* Include the following in the build.gradle to compile with the NielsenExoPlayerPlugin&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;compile project(':NielsenExoPlayerPlugin')&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Build the NielsenSampleAppForExoPlayer to produce the NielsenSampleAppForExoPlayer apk file (Sample App with Plugin).&lt;br /&gt;
&lt;br /&gt;
== Nielsen ExoPlayer Plugin ==&lt;br /&gt;
The Nielsen ExoPlayer Plugin monitors the ExoPlayer events and provides the required metadata to the Nielsen AppSDK for measurements. The ExoPlayer Plugin is created with the PluginManager.&lt;br /&gt;
&lt;br /&gt;
In order to monitor ExoPlayer with Nielsen measuring SDK, ExoPlayer Plugin has to be created.&lt;br /&gt;
&lt;br /&gt;
=== PluginManager and Plugin instances ===&lt;br /&gt;
At any moment there can be at most 4 instances of Nielsen SDK. That rule also applies to Nielsen ExoPlayer Plugin instances.&lt;br /&gt;
&lt;br /&gt;
=== Plugin Manager ===&lt;br /&gt;
The main object that manages Nielsen ExoPlayer Plugins is the Nielsen PluginManager. All interaction with Nielsen ExoPlayer Plugins is done through the Nielsen PluginManager instance. Nielsen PluginManager instance has to be initialized and the proper way to do this is:&lt;br /&gt;
* By creating your own Application class that extends AppSdkApplication. It is mandatory to extend AppSdkApplication and change application android:name field in AndroidManifest file. Nielsen SDK will not work properly for DCR static productif you do not extend it.&lt;br /&gt;
* In your own application class, call the initialiseInstance() in the onCreate method:&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.initialiseInstance(this);&amp;lt;/syntaxhighlight&amp;gt;Or this line if you want to enable log output from PluginManager and Plugin instances:&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.initialiseInstance(this, enableLogging);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After initialization, PluginManager instance is ready to create the Plugin instances.&lt;br /&gt;
&lt;br /&gt;
=== Plugin Tags ===&lt;br /&gt;
The PluginManager stores Plugin instances and each Plugin instance has its own tag. Tags can be specified in createNewPlugin() method, or if it is null, the tag is created and returned.&lt;br /&gt;
&lt;br /&gt;
Plugin tags are important because every interaction with Plugin is via its tag through the PluginManager.&lt;br /&gt;
&lt;br /&gt;
=== Plugin Creation ===&lt;br /&gt;
Plugin is created with '''createNewPlugin''' method of PluginManager instance. Plugin can be created with or without ExoPlayer reference. With later option, ExoPlayer has to be attached to the Plugin instance.&lt;br /&gt;
&lt;br /&gt;
Important fields is PluginConfig which has all properties mandatory for Nielsen SDK. For more details refer to the [[Android SDK API Reference]].&lt;br /&gt;
&lt;br /&gt;
As stated in Plugin Tags section, createNewPlugin method returns the Plugin tag that is either generated by the PluginManager itself (null is passed as pluginTag field) or tag provided to it.&lt;br /&gt;
&lt;br /&gt;
PluginEventListener is an optional field. If set, the Nielsen AppSdk events are forwarded to that object. PluginEventListener must not be anonymous as it will be garbage collected.&lt;br /&gt;
&lt;br /&gt;
Following is an example of the code for Plugin creation without ExoPlayer reference.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;JSONObject config = new JSONObject()&lt;br /&gt;
              .put(&amp;quot;appid&amp;quot;, &amp;quot;TF2D48D99-9B58-B05C-E040-070AAB3176DB&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;appname&amp;quot;, getResources().getString(R.string.app_name))&lt;br /&gt;
              .put(&amp;quot;appversion&amp;quot;, BuildConfig.VERSION_NAME)&lt;br /&gt;
              .put(&amp;quot;sfcode&amp;quot;, PluginConfig.SF_CODE_DCR)&lt;br /&gt;
              .put(&amp;quot;clientid&amp;quot;, &amp;quot;AppSampleClientId&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;prod&amp;quot;, &amp;quot;vc,iag&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;category&amp;quot;, &amp;quot;AppSampleCategory&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;tfid&amp;quot;, &amp;quot;AppSampleTfid&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;vcid&amp;quot;, &amp;quot;AppSampleVcId&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;sid&amp;quot;, &amp;quot;AppSampleSid&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;pd&amp;quot;, &amp;quot;AppSamplePd&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;nol_devdebug&amp;quot;, &amp;quot;DEBUG&amp;quot;)&lt;br /&gt;
              .put(&amp;quot;nol_url_override&amp;quot;, sdkCfgUrl);&lt;br /&gt;
nielsenPluginTag = PluginManager.getInstance()&lt;br /&gt;
.createNewPlugin(config, null, getContext(), pluginEventListener);&lt;br /&gt;
// Or this next line if you want to provide your own pluginTag&lt;br /&gt;
PluginManager.getInstance()&lt;br /&gt;
.createNewPlugin(pluginConfigBuilder.build(), nielsenPluginTag, getContext(), pluginEventListener);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin lifecycle ===&lt;br /&gt;
*Scope:&lt;br /&gt;
** After creation, every Plugin is stored in the PluginManager. The Plugin Manager is a Singleton. This means that Plugin scope is greater than ExoPlayer which the Plugin monitors and is not destroyed when Activity or Fragment holding ExoPlayer is destroyed. Plugin only has a WeakReference to that ExoPlayer object to prevent memory leaks. Also, this ensures that ExoPLayer is destroyed with its Activity or Fragment.&lt;br /&gt;
** The Plugin instance has to be destroyed manually when it is not required any more.&lt;br /&gt;
&lt;br /&gt;
*Destroying Plugin instance:&lt;br /&gt;
** Use the PluginManager to destroy a Plugin instance.&lt;br /&gt;
** Provide the Tag of the Plugin instance to specify which Plugin instance is to be destroyed instance&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.getInstance().destroyPlugin(nielsenPluginTag);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Attaching Plugin to new ExoPlayer:&lt;br /&gt;
** Upon device rotation and configuration change, if the activity or fragment is recreated, since Plugin instance scope is greater, it is possible to attach new ExoPlayer to the existing Plugin instance.&lt;br /&gt;
** Note that NielsenPluginDataProvider, ExoPlayerContentDataProvider and PluginEventListener have to be attached too.&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.getInstance()&lt;br /&gt;
.attachPluginToExoPlayer(nielsenPluginTag, exoPlayer, contentDataProvider, pluginDataProvider, pluginEventListener);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data Providers ===&lt;br /&gt;
Nielsen Plugin sends content and ad metadata to the Nielsen SDK for measurements. Plugin collects some content and ad metadata and it also provides an interface for the client to populate additional metadata.&lt;br /&gt;
&lt;br /&gt;
==== Nielsen Plugin Data Provider ====&lt;br /&gt;
NielsenPluginDataProvider has two methods that it uses to collect metadata from app.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;JSONObject onPlayDataRequest(JSONObject playDataObject, String pluginTag);&lt;br /&gt;
JSONObject onContentMetaDataRequest(JSONObject metadataObject, String pluginTag);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pluginTag field is passed by plugin so that in case of mulitple Plugin instances it is easily distinguishable which Plugin instance requires data.&lt;br /&gt;
&lt;br /&gt;
For more information on the Nielsen App SDK metadata refer to the [[Android SDK API Reference]].&lt;br /&gt;
&lt;br /&gt;
==== Nielsen ExoPlayer Content Data Provider ====&lt;br /&gt;
ExoPlayerContentDataProvider has three methods and it request data regarding ExoPlayer that is linked to the Plugin instance and plays content.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;boolean isContentPlaying();&lt;br /&gt;
boolean isContentAboutToPlay();&lt;br /&gt;
boolean isAdAboutToPlay();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nielsen ExoPlayer Ads Data Provider ====&lt;br /&gt;
ExoPlayerAdsDataProvider has two methods and it requests data regarding advertisement player.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;JSONObject onAdMetadataRequest(JSONObject metadataObject, String pluginTag); long onAdPositionRequest();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advertisement Adapter ===&lt;br /&gt;
Advertisement Adapter is a link between user Advertisement implementation and Nielsen Plugin instance that monitors that advertisement.&lt;br /&gt;
&lt;br /&gt;
Advertisement Adapter is required only for advertisement monitoring, and it is not necessary for the regular content monitoring.&lt;br /&gt;
&lt;br /&gt;
==== Advertisement Adapter creation ====&lt;br /&gt;
Advertisement Adapter is created via Plugin Manager. To create Advertisement Adapter, use createAdvertisementAdapterForPlugin() method, example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;advertisementAdapter = PluginManager.getInstance()&lt;br /&gt;
.createAdvertisementAdapterForPlugin(nielsenPluginTag, adsDataProvider);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both pluginTag and AdsDataProvider parameters are mandatory.&lt;br /&gt;
&lt;br /&gt;
==== Usage ====&lt;br /&gt;
It is user responsibility to call appropriate advertisement adapter methods when it is required.&lt;br /&gt;
&lt;br /&gt;
Advertisement adapter methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;void onAdStart()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;void onAdPause()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;void onAdResume()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;void onAdEnd()&amp;lt;/code&amp;gt;&lt;br /&gt;
By delegating those ad events to the Advertisement adapter, Plugin instance can properly handle advertisement monitoring.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' A new advertisement adapter must be created when the new ExoPlayer is created and attached to the Nielsen Plugin instance.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Opt-In / Opt-Out use cases ==&lt;br /&gt;
When the app user wants to opt in or opt out of Nielsen measurement, a new dynamic page should be displayed. Nielsen ExoPlayer plugin provides an interface to obtain the OptOut Url. Additionally it also provides two other Opt Out implementations. The optIn / optOut value selected by the user is passed to the Plugin.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' All OptOut use cases rely on a Plugin instance which means that PluginManager must have at least one Plugin instance for OptOut use case to work.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Opt Out Interface ===&lt;br /&gt;
Use PluginManager to obtain Nielsen user Opt Out Url&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.getInstance().getOptOutUrl();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
User selected Opt Out result must be passed to PluginManager instance.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;PluginManager.getInstance().sendOptInOutEvent(optOutresult);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For more information refer to the Nielsen SDK Documentation.&lt;br /&gt;
&lt;br /&gt;
=== Opt Out Activity ===&lt;br /&gt;
The OptOut Activity is provided with the Plugin. Using the following steps the Nielsen Opt Out web page can be rendered.&lt;br /&gt;
&lt;br /&gt;
Implementation:&lt;br /&gt;
* Add Nielsen OptOutctivity to your AndroidManifest.xml&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;activity android:name=&amp;quot;.OptOutActivity&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Show OptOutActiivty&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;PluginManager.getInstance().showOptOutActivity(activity);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Opt Out Fragment ===&lt;br /&gt;
An OptOutFragment is also provided with the Plugin. Using the following steps the Nielsen OptOut web page can be rendered.&lt;br /&gt;
&lt;br /&gt;
Implementation:&lt;br /&gt;
* Add OptOutFragment in your activity layout&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;fragment&lt;br /&gt;
android:id=&amp;quot;@+id/NielsenOptOutFragment&amp;quot;&lt;br /&gt;
android:name=&amp;quot;.OptOutFragment&amp;quot;&lt;br /&gt;
android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
android:layout_height=&amp;quot;wrap_content&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Add Nielsen OptOutFragment with FragmentManager&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;final OptOutFragment optOutFragment = OptOutFragment.newInstance();&lt;br /&gt;
final FragmentManager fragmentManager = getSupportFragmentManager();&lt;br /&gt;
fragmentManager.beginTransaction().add(R.id.fragment_container, optOutFragment, OptOutFragment.TAG).commit();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PluginManager Methods ==&lt;br /&gt;
&lt;br /&gt;
The following API's are provided by the PluginManager for the application to interact with Plugin instances.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Name&lt;br /&gt;
|-&lt;br /&gt;
| AppDisable || &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;boolean disableNielsenAppSdk(boolean disable)&lt;br /&gt;
boolean isNielsenAppSdkDisabled()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Logging || &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;void setLogging(boolean enableLogging) boolean isLoggingEnabled()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Existence || &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;boolean hasPluginWithTag(String pluginTag)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Static Content || &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;boolean sendStaticContent(JSONObject staticContent, String pluginTag)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ID3 Metadata || &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;boolean sendId3Metadata(String metadataMap, String pluginTag)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Static content ===&lt;br /&gt;
StaticContent is used to provide the metadata required for measuring static content.&lt;br /&gt;
&lt;br /&gt;
Static content usage:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;JSONObject staticContent = new JSONObject()&lt;br /&gt;
       .put(&amp;quot;type&amp;quot;, &amp;quot;static&amp;quot;)&lt;br /&gt;
       .put(&amp;quot;section&amp;quot;, &amp;quot;siteSection&amp;quot;)&lt;br /&gt;
       .put(&amp;quot;crossId&amp;quot;, &amp;quot;Reference11&amp;quot;)&lt;br /&gt;
       .put(&amp;quot;segA&amp;quot;, &amp;quot;segA&amp;quot;)&lt;br /&gt;
       .put(&amp;quot;segB&amp;quot;, &amp;quot;segB&amp;quot;)&lt;br /&gt;
       .put(&amp;quot;segC&amp;quot;, &amp;quot;segC&amp;quot;);&lt;br /&gt;
PluginManager.getInstance().sendStaticContent(staticContent, nielsenPluginTag);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ID3 Metadata ===&lt;br /&gt;
If your ExoPlayer implementation supports ID3 metadata, it can be passed to the Nielsen AppSdk Plugin through the PluginManager.&lt;br /&gt;
&lt;br /&gt;
ID3 metadata API usage:&lt;br /&gt;
&lt;br /&gt;
Forward metadata object from the MetadataTrackRenderer.MetadataRenderer &amp;lt;Object&amp;gt; callback method&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;void onMetadata(Object metadata);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;@Override&lt;br /&gt;
public void onMetadata(Object metadata) {&lt;br /&gt;
PluginManager.getInstance().sendId3Metadata(metadata, nielsenPluginTag);&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PluginTag parameter is mandatory. It specifies which Plugin instance will be used to send ID3 metadata.&lt;br /&gt;
&lt;br /&gt;
== ExoPlayer 1.5.8 has a known issue ==&lt;br /&gt;
&lt;br /&gt;
https://github.com/google/ExoPlayer/issues/1074&lt;br /&gt;
&lt;br /&gt;
Due to this, in case of live stream pause and resume scenario, live stream could not continue playback after ~2 mins of resume from pause. Rather it posts an error for this Exception in trace so that app developers can take preventive measures to recover from the situation. If app developers are not taking care of this, it may lead to possible app user experience issue where user has to hit play button to continue to play live stream after pause and resume scenario.&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Version # !! Date !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen AppSDK Plugin for ExoPlayer || 1.0.0 || 7/26/2016 || Initial version of the Nielsen Android App SDK Plugin for ExoPlayer with Google IMA ad support. This Plugin has been tested with AppSdk v5.1.1.3.&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen AppSDK Plugin for ExoPlayer || 1.0.1 || 8/26/2016 || Updated version of the Nielsen Android App SDK Plugin for ExoPlayer with Google IMA ad support. This Plugin has been tested with AppSdk v5.1.1.4 and ExoPlayer version 1.5.8. ExoPlayer had changed ID3 extraction listener and classes in v1.5.8, those changes are incorporated in the Nielsen Plugin as well&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>