If you want to integrate such features into your own app, the code for querying the headset buttons is readily available in the gPodder source tree (src/gpodder/qmlui/helper.py):
import dbus class MediaButtonsHandler(QtCore.QObject): def __init__(self): QtCore.QObject.__init__(self) headset_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input_0' headset_path2 = '/org/freedesktop/Hal/devices/computer_logicaldev_input' system_bus = dbus.SystemBus() system_bus.add_signal_receiver(self.handle_button, 'Condition', 'org.freedesktop.Hal.Device', None, headset_path) system_bus.add_signal_receiver(self.handle_button, 'Condition', 'org.freedesktop.Hal.Device', None, headset_path2) def handle_button(self, signal, button): if signal == 'ButtonPressed': if button in ('play-cd', 'phone'): self.playPressed.emit() elif button == 'pause-cd': self.pausePressed.emit() elif button == 'previous-song': self.previousPressed.emit() elif button == 'next-song': self.nextPressed.emit() playPressed = QtCore.Signal() pausePressed = QtCore.Signal() previousPressed = QtCore.Signal() nextPressed = QtCore.Signal()MediaButtonsHandler is already a QObject subclass, so you can easily expose an instance of this class to your QDeclarativeView rootContext() and connect to the signals in QML (such a "headset button handler" might actually be a good candidate for inclusion into nemo-qml-plugins in Sailfish OS and Nemo Mobile?). As it's really just using the Python D-Bus bindings to get property changes from Hal devices, the code above should be easy (read: trivial) to port from Python to Qt/C++. Be aware that you need to connect to both .../computer_logicaldev_input_0 and .../computer_logicaldev_input, which can both exist if you have a cable headset and a Bluetooth headset connected at the same time.
You can get the Headset Camera App for the N9 in Nokia Store now, there is also a video on YouTube showing the app. Or start integrating headset button features into your own app or scripts by adapting the code above. One use case that comes to mind is using the previous/next buttons on a Bluetooth headset to control a photo slideshow on the N9 connected to TV-Out. Enjoy :)
Keine Kommentare:
Kommentar veröffentlichen