<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="468px" preserveAspectRatio="none" style="width:1087px;height:468px;background:#F0F0F0;" version="1.1" viewBox="0 0 1087 468" width="1087px" zoomAndPan="magnify"><defs><filter height="300%" id="f1jvycsltafvmo" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="27" x2="27" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="200.5" x2="200.5" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="378" x2="378" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="573" x2="573" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="767.5" x2="767.5" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="929.5" x2="929.5" y1="86.2969" y2="381.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1023.5" x2="1023.5" y1="86.2969" y2="381.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="8" y="82.9951">User</text><ellipse cx="27" cy="13" fill="#FEFECE" filter="url(#f1jvycsltafvmo)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M27,21 L27,48 M14,29 L40,29 M27,48 L14,63 M27,48 L40,63 " fill="none" filter="url(#f1jvycsltafvmo)" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="8" y="393.3545">User</text><ellipse cx="27" cy="406.6563" fill="#FEFECE" filter="url(#f1jvycsltafvmo)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M27,414.6563 L27,441.6563 M14,422.6563 L40,422.6563 M27,441.6563 L14,456.6563 M27,441.6563 L40,456.6563 " fill="none" filter="url(#f1jvycsltafvmo)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="156.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="71" x="163.5" y="70.9951">A2DP Sink</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="156.5" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="71" x="163.5" y="400.3545">A2DP Sink</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="224" x="264" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="210" x="271" y="70.9951">Source's AVRCP event handler</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="224" x="264" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="210" x="271" y="400.3545">Source's AVRCP event handler</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="503" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="122" x="510" y="70.9951">Service Bluetooth</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="503" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="122" x="510" y="400.3545">Service Bluetooth</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="712.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="93" x="719.5" y="70.9951">Service Audio</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="712.5" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="93" x="719.5" y="400.3545">Service Audio</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="892.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="899.5" y="70.9951">Settings</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="892.5" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="899.5" y="400.3545">Settings</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="89" x="977.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="75" x="984.5" y="70.9951">Application</text><rect fill="#FEFECE" filter="url(#f1jvycsltafvmo)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="89" x="977.5" y="380.3594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="75" x="984.5" y="400.3545">Application</text><polygon fill="#A80036" points="189,113.4297,199,117.4297,189,121.4297,193,117.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="195" y1="117.4297" y2="117.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="34" y="112.3638">Volume button pressed</text><rect fill="#EEEEEE" filter="url(#f1jvycsltafvmo)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1072.5" x="3" y="145.9961"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1075.5" y1="145.9961" y2="145.9961"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1075.5" y1="148.9961" y2="148.9961"/><rect fill="#EEEEEE" filter="url(#f1jvycsltafvmo)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="54" x="512.25" y="135.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="518.25" y="151.4966">A2DP</text><polygon fill="#A80036" points="366,185.6953,376,189.6953,366,193.6953,370,189.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="201" x2="372" y1="189.6953" y2="189.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="153" x="208" y="184.6294">AVRCP volume changed</text><rect fill="#EEEEEE" filter="url(#f1jvycsltafvmo)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1072.5" x="3" y="210.6953"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1075.5" y1="210.6953" y2="210.6953"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1075.5" y1="213.6953" y2="213.6953"/><polygon fill="#A80036" points="561,242.8281,571,246.8281,561,250.8281,565,246.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="378" x2="567" y1="246.8281" y2="246.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="171" x="385" y="241.7622">Volume changed message</text><polygon fill="#A80036" points="756,271.9609,766,275.9609,756,279.9609,760,275.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="573" x2="762" y1="275.9609" y2="275.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="171" x="580" y="270.895">Volume changed message</text><polygon fill="#A80036" points="918,301.0938,928,305.0938,918,309.0938,922,305.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="768" x2="924" y1="305.0938" y2="305.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="138" x="775" y="300.0278">Set appropriate value</text><polygon fill="#A80036" points="1012,330.2266,1022,334.2266,1012,338.2266,1016,334.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="768" x2="1018" y1="334.2266" y2="334.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="158" x="775" y="329.1606">Current volume changed</text><polygon fill="#A80036" points="38,359.3594,28,363.3594,38,367.3594,34,363.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="32" x2="1023" y1="363.3594" y2="363.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="44" y="358.2935">Show current volume level</text><!--MD5=[20d94dff2733eadb58d0dc4d1a810e30]
@startuml
skinparam BackgroundColor F0F0F0
actor User
participant "A2DP Sink" as sink
participant "Source's AVRCP event handler" as source
participant "Service Bluetooth" as bt
participant "Service Audio" as audio
participant "Settings" as settings
participant "Application" as app
User -> sink : Volume button pressed
==A2DP==
sink -> source : AVRCP volume changed
== ==
source -> bt : Volume changed message
bt -> audio : Volume changed message
audio -> settings : Set appropriate value
audio -> app : Current volume changed
app -> User : Show current volume level
@enduml
PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>