9 _moduleLogger = logging.getLogger(__name__)
12 class SimplePlayer(object):
14 SERVICE_NAME = "com.nokia.osso_media_server"
15 OBJECT_PATH = "/com/nokia/osso_media_server"
16 AUDIO_INTERFACE_NAME = "com.nokia.osso_media_server.music"
18 def __init__(self, on_playing_done = None):
25 self.on_playing_done = on_playing_done
27 session_bus = dbus.SessionBus()
29 # Get the osso-media-player proxy object
30 oms_object = session_bus.get_object(
34 follow_name_owner_changes=True,
36 # Use the audio interface
37 oms_audio_interface = dbus.Interface(
39 self.AUDIO_INTERFACE_NAME,
41 self._audioProxy = oms_audio_interface
43 self._audioProxy.connect_to_signal("state_changed", self._on_state_changed)
44 self._audioProxy.connect_to_signal("end_of_stream", self._on_end_of_stream)
56 "audio_codec_not_supported",
58 for error in error_signals:
59 self._audioProxy.connect_to_signal(error, self._on_error)
61 @gtk_toolbox.log_exception(_moduleLogger)
62 def _on_error(self, *args):
65 @gtk_toolbox.log_exception(_moduleLogger)
66 def _on_end_of_stream(self, *args):
68 if self.on_playing_done is not None: # event callback
69 self.on_playing_done(self)
71 @gtk_toolbox.log_exception(_moduleLogger)
72 def _on_state_changed(self, state):
73 _moduleLogger.info("State: %s", state)
75 def set_file(self, file):
76 _moduleLogger.info("set file: %s", file)
77 if os.path.isfile(file):
81 uri = "file://" + file
82 self._audioProxy.set_media_location(uri)
85 _moduleLogger.error("File: %s not found" % file)
88 _moduleLogger.info("Started playing")
89 self._audioProxy.play()
93 self._audioProxy.stop()
95 _moduleLogger.info("Stopped playing")
98 pos_info = self._audioProxy.get_position()
99 if isinstance(pos_info, tuple):
106 pos_info = self._audioProxy.get_position()
107 if isinstance(pos_info, tuple):
113 def seek_time(self, ns):
114 _moduleLogger.debug("Seeking to: %s", ns)
115 self._audioProxy.seek( dbus.Int32(1), dbus.Int32(ns) )