package com.zxt.dlna.dmr; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; import org.fourthline.cling.model.types.UnsignedIntegerFourBytes; import org.fourthline.cling.support.lastchange.LastChange; import org.fourthline.cling.support.model.TransportState; import android.content.Context; /** * @author offbye */ public class ZxtMediaPlayers extends ConcurrentHashMap<UnsignedIntegerFourBytes, ZxtMediaPlayer> { final private static Logger log = Logger.getLogger(ZxtMediaPlayers.class.getName()); final protected LastChange avTransportLastChange; final protected LastChange renderingControlLastChange; private Context mContext; public ZxtMediaPlayers(int numberOfPlayers, Context context, LastChange avTransportLastChange, LastChange renderingControlLastChange) { super(numberOfPlayers); this.mContext = context; this.avTransportLastChange = avTransportLastChange; this.renderingControlLastChange = renderingControlLastChange; for (int i = 0; i < numberOfPlayers; i++) { ZxtMediaPlayer player = new ZxtMediaPlayer( new UnsignedIntegerFourBytes(i), mContext, avTransportLastChange, renderingControlLastChange ) { @Override protected void transportStateChanged(TransportState newState) { super.transportStateChanged(newState); if (newState.equals(TransportState.PLAYING)) { onPlay(this); } else if (newState.equals(TransportState.STOPPED)) { onStop(this); } } }; put(player.getInstanceId(), player); } } protected void onPlay(ZxtMediaPlayer player) { log.fine("Player is playing: " + player.getInstanceId()); } protected void onStop(ZxtMediaPlayer player) { log.fine("Player is stopping: " + player.getInstanceId()); } }