Android Open Source - PlayerHater Abstract Plugin






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
 */*from   w  w w . j  a  va2 s  .c o  m*/
 * 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.plugins;

import android.app.PendingIntent;
import android.content.Context;
import android.net.Uri;

import org.prx.playerhater.PlayerHater;
import org.prx.playerhater.PlayerHaterPlugin;
import org.prx.playerhater.Song;

/**
 * A simple helper for writing {@linkplain PlayerHaterPlugin}s
 * <p/>
 * Subclasses MUST implement a default no-argument constructor.
 *
 * @author Chris Rhoden
 * @version 2.1.0
 * @see {@link PlayerHaterPlugin}
 * @since 2.0.0
 */
public abstract class AbstractPlugin implements PlayerHaterPlugin {
    private PlayerHater mPlayerHater;
    private Context mContext;

    public AbstractPlugin() {

    }

    /**
     * {@inheritDoc}
     * <p/>
     * Overridden implementations should be sure to call
     * {@code super.onPlayerHaterLoaded} so that future calls to
     * {@link #getContext()} and {@link #getPlayerHater()} can succeed.
     */
    @Override
    public synchronized void onPlayerHaterLoaded(Context context, PlayerHater playerHater) {
        mContext = context;
        mPlayerHater = playerHater;
    }

    @Override
    public void onAudioStarted() {
    }

    /**
     * {@inheritDoc}
     * <p/>
     * The default implementation forwards this method call to
     * {@link #onAudioStarted()}
     */
    @Override
    public void onAudioResumed() {
        onAudioStarted();
    }

    @Override
    public void onAudioStopped() {
    }

    @Override
    public void onTitleChanged(String title) {
    }

    @Override
    public void onArtistChanged(String artist) {
    }

    @Override
    public void onAlbumTitleChanged(String albumTitle) {
    }

    @Override
    public void onAlbumArtChanged(Uri uri) {
    }

    /**
     * {@inheritDoc}
     * <p/>
     * The default implementation will call {@link #onAlbumArtChanged(Uri)}
     * , {@link #onTitleChanged(String)}, and {@link #onArtistChanged(String)}
     */
    @Override
    public void onSongChanged(Song song) {
        if (song != null) {
            onTitleChanged(song.getTitle());
            onArtistChanged(song.getArtist());
            onAlbumTitleChanged(song.getAlbumTitle());
            onAlbumArtChanged(song.getAlbumArt());
        }
    }

    @Override
    public void onDurationChanged(int duration) {
    }

    @Override
    public void onAudioLoading() {
    }

    @Override
    public void onAudioPaused() {
    }

    @Override
    public void onNextSongAvailable(Song nextSong) {
    }

    @Override
    public void onNextSongUnavailable() {
    }

    @Override
    public void onPendingIntentChanged(PendingIntent pending) {
    }

    @Override
    public void onSongFinished(Song song, int reason) {
    }

    @Override
    public void onChangesComplete() {
    }

    @Override
    public void onTransportControlFlagsChanged(int transportControlFlags) {
    }

    @Override
    public void onPlayerHaterShutdown() {
        mPlayerHater = null;
        mContext = null;
    }

    /**
     * Grants the plugin easy access to the instance of {@link PlayerHater} that
     * it is permitted to use.
     *
     * @return An instance of PlayerHater
     */
    protected synchronized final PlayerHater getPlayerHater() {
        if (mPlayerHater == null)
            throw new IllegalStateException("PlayerHater is not loaded yet or has been shut down.");
        return mPlayerHater;
    }

    /**
     * A method providing simple access to the plugin's context without having
     * to override {@link #onPlayerHaterLoaded(Context, PlayerHater)}
     *
     * @return The {@link Context} in which the plugin is running.
     */
    protected synchronized final Context getContext() {
        if (mContext == null)
            throw new IllegalStateException("PlayerHater is not loaded yet or has been shut down.");
        return mContext;
    }
}




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