Android Open Source - PlayerHater Remote Song






From Project

Back to project page PlayerHater.

License

The source code is released under:

Apache License

If you think the Android project PlayerHater listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright 2013 Chris Rhoden, Rebecca Nesson, Public Radio Exchange
 * /*  w w  w . ja va2  s.com*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package org.prx.playerhater.songs;

import org.prx.playerhater.Song;

import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;

class RemoteSong implements Song {

  private static SongHost.Remote getRemote() {
    return SongHost.remote();
  }

  private final int mTag;
  private Song mSong = null;
  private static final String remoteSongExceptionMessage = "Remote Process has died or become disconnected and song data has not been copied";

  RemoteSong(int tag) {
    mTag = tag;
  }

  @Override
  public String getTitle() {
    try {
      return getRemote().getSongTitle(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getTitle();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  @Override
  public String getArtist() {
    try {
      return getRemote().getSongArtist(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getArtist();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  @Override
  public Uri getAlbumArt() {
    try {
      return getRemote().getSongAlbumArt(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getAlbumArt();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  @Override
  public Uri getUri() {
    try {
      return getRemote().getSongUri(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getUri();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  @Override
  public Bundle getExtra() {
    try {
      return getRemote().getSongExtra(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getExtra();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  @Override
  public String getAlbumTitle() {
    try {
      return getRemote().getSongAlbumTitle(mTag);
    } catch (RemoteException e) {
      if (mSong != null) {
        return mSong.getAlbumTitle();
      }
      throw new IllegalStateException(remoteSongExceptionMessage, e);
    }
  }

  void setSong(Song song) {
    mSong = song;
  }
  
  Song getSong() { 
    return mSong; 
  }
}




Java Source Code List

.AbstractPlugin.java
.AudioFocusPlugin.java
.BackgroundedPlugin.java
.BoundPlayerHater.java
.BroadcastReceiver.java
.ClientPlugin.java
.Config.java
.ExpandableNotificationPlugin.java
.HeadphoneButtonGestureHelper.java
.IPlayerHater.java
.LockScreenControlsPlugin.java
.Log.java
.MediaPlayerPool.java
.NotificationPlugin.java
.OnAudioFocusChangedListener.java
.PebblePlugin.java
.PlaybackService.java
.PlayerHaterClient.java
.PlayerHaterListenerPlugin.java
.PlayerHaterListener.java
.PlayerHaterPlugin.java
.PlayerHaterServer.java
.PlayerHaterService.java
.PlayerHater.java
.PlayerStateWatcher.java
.Player.java
.PlaylistParser.java
.PlaylistSupportingPlayer.java
.PluginCollection.java
.Receiver.java
.RemoteControlButtonReceiver.java
.RemoteSong.java
.ServerPlayerHater.java
.ServicePlayerHater.java
.SongHost.java
.SongQueue.java
.Song.java
.Songs.java
.StatelyPlayer.java
.SynchronousPlayer.java
.ThreadsafePlayerHater.java
.ThreadsafeServicePlayerHater.java
.TouchableNotificationPlugin.java
org.prx.playerhater.BroadcastReceiver.java
org.prx.playerhater.PlaybackService.java
org.prx.playerhater.PlayerHaterListener.java
org.prx.playerhater.PlayerHaterPlugin.java
org.prx.playerhater.PlayerHater.java
org.prx.playerhater.Song.java
org.prx.playerhater.broadcast.HeadphoneButtonGestureHelper.java
org.prx.playerhater.broadcast.OnAudioFocusChangedListener.java
org.prx.playerhater.broadcast.Receiver.java
org.prx.playerhater.broadcast.RemoteControlButtonReceiver.java
org.prx.playerhater.ipc.ClientPlugin.java
org.prx.playerhater.ipc.PlayerHaterClient.java
org.prx.playerhater.ipc.PlayerHaterServer.java
org.prx.playerhater.ipc.ServerPlayerHater.java
org.prx.playerhater.mediaplayer.MediaPlayerPool.java
org.prx.playerhater.mediaplayer.Player.java
org.prx.playerhater.mediaplayer.PlaylistSupportingPlayer.java
org.prx.playerhater.mediaplayer.StatelyPlayer.java
org.prx.playerhater.mediaplayer.SynchronousPlayer.java
org.prx.playerhater.plugins.AbstractPlugin.java
org.prx.playerhater.plugins.AudioFocusPlugin.java
org.prx.playerhater.plugins.BackgroundedPlugin.java
org.prx.playerhater.plugins.ExpandableNotificationPlugin.java
org.prx.playerhater.plugins.LockScreenControlsPlugin.java
org.prx.playerhater.plugins.NotificationPlugin.java
org.prx.playerhater.plugins.PebblePlugin.java
org.prx.playerhater.plugins.PlayerHaterListenerPlugin.java
org.prx.playerhater.plugins.PluginCollection.java
org.prx.playerhater.plugins.ScrubbableLockScreenControlsPlugin.java
org.prx.playerhater.plugins.TouchableNotificationPlugin.java
org.prx.playerhater.service.PlayerHaterService.java
org.prx.playerhater.service.PlayerStateWatcher.java
org.prx.playerhater.songs.RemoteSong.java
org.prx.playerhater.songs.SongHost.java
org.prx.playerhater.songs.SongQueue.java
org.prx.playerhater.songs.Songs.java
org.prx.playerhater.util.Config.java
org.prx.playerhater.util.IPlayerHater.java
org.prx.playerhater.util.Log.java
org.prx.playerhater.util.PlaylistParser.java
org.prx.playerhater.wrappers.BoundPlayerHater.java
org.prx.playerhater.wrappers.ServicePlayerHater.java
org.prx.playerhater.wrappers.ThreadsafePlayerHater.java
org.prx.playerhater.wrappers.ThreadsafeServicePlayerHater.java