text: class Audio(object):
      '''Audio Facade.
  
      Used for recording audio.
      Use method `start` to start record and `stop` for stop recording.
      To hear what you have just recorded, use method `play`.
  
      `status` will tell you about current job of the Audio.
  
      Default path for recording is set in platform implementation.
  
      .. note::
          On Android the `RECORD_AUDIO` permission is needed.
      '''
  
      state = 'ready'
      _file_path = ''
  
      def __init__(self, file_path):
          super(Audio, self).__init__()
          self._file_path = file_path
  
      def start(self):
          '''Start record.'''
          self._start()
          self.state = 'recording'
  
      def _start(self):
          raise NotImplementedError()
  
      def stop(self):
          '''Stop record.'''
          self._stop()
          self.state = 'ready'
  
      def _stop(self):
          raise NotImplementedError()
  
      def play(self):
          '''Play current recording.'''
          self._play()
          self.state = 'playing'
  
      def _play(self):
          raise NotImplementedError()
  
      @property
      def file_path(self):
          return self._file_path
  
      @file_path.setter
      def file_path(self, location):
          '''Location of the recording.'''
          assert isinstance(location, (basestring, unicode)), \
              'Location must be string or unicode'
          self._file_path = location
  