evacuated-noice/docs/assets/android-app-architecture.svg

3 lines
24 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="797px" height="631px" viewBox="-0.5 -0.5 797 631" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-02-28T18:24:20.779Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;AHuXY2tZKPIIaHfCIoYQ&quot; version=&quot;14.4.3&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;oHmrwfZaiswidPWkB6p1&quot; name=&quot;Page-1&quot;&gt;7VrbcuI4EP0aqjIPpAy+EB4DIZPMJEtq2NRO8iZsYWtjLK8sc8nXT8uWAVuEmHBztsILVrt1cXef7iPZNb07nn1nKPTuqYP9WlNzZjX9qtaEX0uDPyGZp5KWoacClxEnFTWWggF5xVIo+7kxcXCUU+SU+pyEeaFNgwDbPCdDjNFpXm1E/fysIXKxIhjYyFel/xCHe6n0wtSW8htMXC+buaHJO2OUKUtB5CGHTldEeq+mdxmlPL0az7rYF8bL7JL2u37j7mJhDAe8TIfeLaf933b7bhrFxujHk3Xz4tXlKBPkx/KB5WL5PLMAo3HgYDGIVtM7U49wPAiRLe5Owecg8/jYh1YDLkfE97vUpwzaAQ1AqRNxRl9wQaguPlsJZhzPVkTyYb5jOsaczUFFRlLmgunSLa3M+N6KSyxdCpEMBXcx1NJacCENtt54N6GJL6z+363pdDLqxS/XN+1e3bDWWM/yYd6OQyZw6YrLKB5GNiNDnIRupgATruis6RaHDuKiD56AjaJMY8iKfYojFdyHHYhn2aSMe9SlAfJ7S2kn7+Clzh2loXTrv5jzuQQniuEpck6H9bH5b9H/3MyaT3K4pHE1y7XmshVxxPilAOlqtIDsmghHJDpvBkpEY2bjTd6RoQwDuphvUjRSRWGpjYHHsI84meQzw/6jqqlEVU+EQCeOFOdCTgnFZciojaPofXwOkf3iJg7vx9wnwuSJfBc8yruGhJmEp26p+Gw01+HzYPA0v8CwsIVeFgzNaoGhVSbFhvHQJ5G3a24tkUnv0BAITs7hyCduANc2DIWhxHUEZAgwiEt5Y0wcJ40tHJFXNEzGE+4MKRGzw+Bmp2ZerXXwxshWwLngQXKWHNVYB9q6dt6wGjngygAo7V859oN4mBUVOhpFEGnFAFgsYYeYaCsxYfsIsh9MzjlU2phjNVUeFfo54C/zQMWhf1Et6OuKm++xQ9CDj+aYDTCbEHjundjq/qtewzhi1Zv9fCL8+fXX4/inE829ZzT/77muWm0dJ8WBk9gNgkxa8uxb6fQJQE/TJjwlL591UQg0JWQkTb3I5oQGb+ZepfcItg9JeoPthA/MxRWeg1AQjOZzkOPtksJaLH4wAxhlM4C+I+CTrpDJ0HxFQZY5tVRkNaiAIatR2Mi+o99oaQXUpCvYb9ExFFw93sJI14wKNDhVS0Tmxanpd7Y/X7FYP0iT9z0KkIvZY0LDks2NiuAz7oEJXS8JP5dEwK2wyFm+uAww+/ZF7ouFuyS+91nhPwR4o1EAsLYZ8IsztfX6hwG8pRbSqrHMTxmDZqNSLNMyFTcH6bRNbcTQGE8pW8MvLh9uv5y/vfOtskdtEvnaudbW2jnw17Pj3MPmKLO9BclQeuuFs7BCjT3g3vhCCedcyT05TdHNE26Y1ick6xRAPiwgsyT7fjbe+9n3XhiB3t7MCHTN3KR/GEZgqmeRX4xgHzFoblcU6tp5y8gOhqsVl2Zzi7g85plp5gylLlSuICy+GDhZQbCaiq16M5qZS9mnxlF6GIXCMFkNeDD6VJtTB0VeMu8R6lLZkyirWrsEUz39uaM28h/kAeSAM8SxOz85morM09DXoMk8Kr1S39Z000NcEN7jKAJaKkro2Y9B/69vKr4yeHVRJFLlAIM9xUnwZQK3/+M+LIfHHbBmlq2/Zd/7rLwzhN9H6u9RS566sxcxVDnIGmblIKtuIiX6fmEbg7MX+NvFdOXCfAs7WnnudfoTcEslXf0A2g5OX12uvL+qkiGbRuUMqZbfwTzieFzYeincDMUOoTXx2actvp6C2bWxeIcsrA2lh9AgFWJun6uc7aReMPXj8WJoLr9DTfPv8mtevfcH&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="96" y="0" width="700" height="630" fill="none" stroke="none" pointer-events="all"/><path d="M 196 370 L 196 523.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 528.88 L 192.5 521.88 L 196 523.63 L 199.5 521.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 450px; margin-left: 196px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; "><div>subscribe to</div><div>update events<br /></div></div></div></div></foreignObject><text x="196" y="453" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">subscribe to...</text></switch></g><rect x="136" y="310" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 148 310 L 148 370 M 244 310 L 244 370" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 340px; margin-left: 149px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">EventBus</div></div></div></foreignObject><text x="196" y="344" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">EventBus</text></switch></g><path d="M 196 150 L 196 303.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 308.88 L 192.5 301.88 L 196 303.63 L 199.5 301.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 218px; margin-left: 199px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; "><div>publish</div><div>update events</div></div></div></div></foreignObject><text x="199" y="221" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">publish...</text></switch></g><path d="M 256 120 L 439.63 120" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 444.88 120 L 437.88 123.5 L 439.63 120 L 437.88 116.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 120px; margin-left: 351px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">class attributes</div></div></div></foreignObject><text x="351" y="123" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">class attributes</text></switch></g><rect x="136" y="90" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 137px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">MediaPlayerService</div></div></div></foreignObject><text x="196" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">MediaPlayerService</text></switch></g><path d="M 136 560 L 56 560 L 56 120 L 129.63 120" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 134.88 120 L 127.88 123.5 L 129.63 120 L 127.88 116.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 340px; margin-left: 56px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; "><div>send startService()</div><div>intents with</div><div>appropriate actions</div><div>for controlling playback<br /></div></div></div></div></foreignObject><text x="56" y="343" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">send startService()...</text></switch></g><rect x="136" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 137px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UI/Frontend</div></div></div></foreignObject><text x="196" y="564" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">UI/Frontend</text></switch></g><path d="M 506 90 L 506 50 L 196 50 L 196 83.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 88.88 L 192.5 81.88 L 196 83.63 L 199.5 81.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 50px; margin-left: 351px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">OnPlayerManagerUpdateEvent<br />(through registered listener)</div></div></div></foreignObject><text x="351" y="53" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">OnPlayerManagerUpdateEvent...</text></switch></g><path d="M 506 150 L 506 213.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 506 218.88 L 502.5 211.88 L 506 213.63 L 509.5 211.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 185px; margin-left: 506px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">class attributes</div></div></div></foreignObject><text x="506" y="188" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">class attributes</text></switch></g><path d="M 566 120 L 686 120 L 686 213.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 686 218.88 L 682.5 211.88 L 686 213.63 L 689.5 211.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 686px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">native framework<br />APIs</div></div></div></foreignObject><text x="686" y="153" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">native framework...</text></switch></g><rect x="446" y="90" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 447px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PlayerManager</div></div></div></foreignObject><text x="506" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PlayerManager</text></switch></g><path d="M 506 280 L 506 340 L 401 340 L 401 373.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 401 378.88 L 397.5 371.88 L 401 373.63 L 404.5 371.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 506 280 L 506 340 L 621 340 L 621 373.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 621 378.88 L 617.5 371.88 L 621 373.63 L 624.5 371.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 307px; margin-left: 506px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">class attributes</div></div></div></foreignObject><text x="506" y="310" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">class attributes</text></switch></g><rect x="446" y="220" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 250px; margin-left: 447px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Player</div></div></div></foreignObject><text x="506" y="254" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Player</text></switch></g><path d="M 401 440 L 401 523.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 401 528.88 L 397.5 521.88 L 401 523.63 L 404.5 521.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 485px; margin-left: 401px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">ExoPlayer<br />(using app assets)</div></div></div></foreignObject><text x="401" y="488" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">ExoPlayer...</text></switch></g><rect x="326" y="380" width="150" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 410px; margin-left: 327px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">LocalPlaybackStrategy</div></div></div></foreignObject><text x="401" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">LocalPlaybackStrategy</text></switch></g><path d="M 621 440 L 621 523.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 621 528.88 L 617.5 521.88 L 621 523.63 L 624.5 521.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 480px; margin-left: 621px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Control Messages (JSON)<br />using Cast Sender App APIs</div></div></div></foreignObject><text x="621" y="483" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">Control Messages (JSON)...</text></switch></g><rect x="546" y="380" width="150" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 410px; margin-left: 547px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CastPlaybackStrategy</div></div></div></foreignObject><text x="621" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">CastPlaybackStrategy</text></switch></g><rect x="561" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 562px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Cast Receiver App</div></div></div></foreignObject><text x="621" y="564" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Cast Receiver App</text></switch></g><rect x="341" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">On device playback</div></div></div></foreignObject><text x="401" y="564" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">On device playback</text></switch></g><rect x="626" y="220" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 250px; margin-left: 627px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">System attributes<br />(audio focus, media session, etc.)</div></div></div></foreignObject><text x="686" y="254" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">System attributes...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>