package com.kitty.poclient.upnp; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import org.fourthline.cling.UpnpServiceConfiguration; import org.fourthline.cling.android.AndroidRouter; import org.fourthline.cling.android.AndroidUpnpServiceConfiguration; import org.fourthline.cling.android.AndroidUpnpServiceImpl; import org.fourthline.cling.model.types.ServiceType; import org.fourthline.cling.model.types.UDAServiceType; import org.fourthline.cling.protocol.ProtocolFactory; import org.fourthline.cling.transport.impl.jetty.StreamClientConfigurationImpl; import org.fourthline.cling.transport.spi.StreamClient; import android.content.Context; import android.content.Intent; import android.util.Log; import com.kitty.poclient.common.Constant; import com.kitty.poclient.events.SimpleEvent; public class MyUpnpServiceImpl extends AndroidUpnpServiceImpl{ private static final String TAG = MyUpnpServiceImpl.class.getSimpleName(); public static final String NOWIFIAVAILABLE = "NoWifiAvailable"; public static class NoWifiAvailableEvent extends SimpleEvent{ public NoWifiAvailableEvent(String type) { super(type); } } @Override protected UpnpServiceConfiguration createConfiguration() { return new AndroidUpnpServiceConfiguration(){ @Override public int getRegistryMaintenanceIntervalMillis() { return 3000; } @Override public ServiceType[] getExclusiveServiceTypes() { return new ServiceType[]{ new UDAServiceType("ConnectionManager"), new UDAServiceType("AVTransport"), new UDAServiceType("RenderingControl"), new UDAServiceType("BoxControl"), new UDAServiceType("ContentDirectory"), new UDAServiceType("CacheControl") }; } //该方法的源码中定义了线程池容�? @Override protected ExecutorService createDefaultExecutorService() { // TODO Auto-generated method stub return super.createDefaultExecutorService(); } @Override public StreamClient createStreamClient() { StreamClientConfigurationImpl configuration=new StreamClientConfigurationImpl(getDefaultExecutorService(), Constant.UPNP_TIMEOUT_MILLIS); StreamClient client=new MyStreamClientImpl(configuration); // StreamClient client=new StreamClientImpl(configuration); return client; } @Override public int getAliveIntervalMillis() { // TODO Auto-generated method stub return super.getAliveIntervalMillis(); } @Override public Executor getRegistryMaintainerExecutor() { // TODO Auto-generated method stub return super.getRegistryMaintainerExecutor(); } }; } @Override protected AndroidRouter createRouter( UpnpServiceConfiguration configuration, ProtocolFactory protocolFactory, Context context) { AndroidRouter router = new AndroidRouter(configuration, protocolFactory, context); if(router.getNetworkInfo() == null){ Log.e(TAG, "no wifi available!!"); context.sendBroadcast(new Intent(NOWIFIAVAILABLE)); } return router; } }