Bluetooth BlueZ MediaPlayer曲目位置未与手机同步

Bluetooth BlueZ MediaPlayer曲目位置未与手机同步,bluetooth,bluez,a2dp,Bluetooth,Bluez,A2dp,我已经将我的Android手机与Ubuntu 18.04.1配对,并在手机上播放音乐(a2dp源代码)。我可以在Ubuntu(a2dp接收器)上听到音乐,使用BlueZ的dbus和media api向手机发送命令(如播放/暂停/下一步等),还可以获取曲目信息(标题、持续时间、曲目位置等) 问题是:如果我正在播放一首持续时间为5分钟的歌曲(目前为2:10),dbus query会给出大约130000毫秒的正确位置,但如果我在手机上手动更改位置为假设2:30,dbus query仍会显示大约130-

我已经将我的Android手机与Ubuntu 18.04.1配对,并在手机上播放音乐(a2dp源代码)。我可以在Ubuntu(a2dp接收器)上听到音乐,使用BlueZ的
dbus
media api
向手机发送命令(如播放/暂停/下一步等),还可以获取曲目信息(标题、持续时间、曲目位置等)

问题是:如果我正在播放一首持续时间为5分钟的歌曲(目前为2:10),dbus query会给出大约130000毫秒的正确位置,但如果我在手机上手动更改位置为假设2:30,dbus query仍会显示大约130-140k毫秒的时间,这意味着它正在根据上次同步自行计算位置,而且不知道电话里有什么变化。但是,如果我暂停并再次播放,该位置将再次同步并显示正确的位置

dbus查询:

    dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/dev_44_C3_46_7B_2D_C7/player0 org.freedesktop.DBus.Properties.Get string:"org.bluez.MediaPlayer1" string:"Position"
我决定交叉检查Windows10
a2dp接收器播放器
,但在那里,来自手机的音轨位置变化会立即反映到播放器窗口。 我尝试使用以下方法监视dbus信号:

dbus-monitor --system "type='signal', sender='org.bluez'"
这就是结果:

dbus-monitor: unable to enable new-style monitoring: org.freedesktop.DBus.Error.AccessDenied: "Rejected send message, 1 matched rules; type="method_call", sender=":1.246" (uid=1000 pid=8991 comm="dbus-monitor --system type='signal', sender='org.b" label="unconfined") interface="org.freedesktop.DBus.Monitoring" member="BecomeMonitor" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (bus)". Falling back to eavesdropping.
signal time=1555847560.121045 sender=org.freedesktop.DBus -> destination=:1.246 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.246"
signal time=1555847570.624003 sender=:1.161 -> destination=(null destination) serial=32467 path=/org/bluez/hci0/dev_44_C3_46_7B_2D_C7/fd1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.MediaTransport1"
   array [
      dict entry(
         string "State"
         variant             string "pending"
      )
   ]
   array [
   ]
signal time=1555847570.625959 sender=:1.161 -> destination=(null destination) serial=32469 path=/org/bluez/hci0/dev_44_C3_46_7B_2D_C7/fd1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.MediaTransport1"
   array [
      dict entry(
         string "State"
         variant             string "active"
      )
   ]
   array [
   ]
signal time=1555847570.662250 sender=:1.161 -> destination=(null destination) serial=32470 path=/org/bluez/hci0/dev_44_C3_46_7B_2D_C7/player0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.MediaPlayer1"
   array [
      dict entry(
         string "Status"
         variant             string "playing"
      )
   ]
   array [
   ]
signal time=1555847570.723943 sender=:1.161 -> destination=(null destination) serial=32471 path=/org/bluez/hci0/dev_44_C3_46_7B_2D_C7/player0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.MediaPlayer1"
   array [
      dict entry(
         string "Position"
         variant             uint32 148405
      )
   ]
   array [
   ]
它确认只有在执行Play/Pause/Next/Previous等操作时才会触发
PropertiesChanged
信号,而不是在手机上更改位置时

我可以让BlueZ在任何时候触发
PropertiesChanged
信号吗?可能是使用BlueZ api本身