package com.talent.allshare.network; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import org.cybergarage.upnp.Device; import org.cybergarage.util.CommonLog; import org.cybergarage.util.LogFactory; import android.util.Log; public class UpnpUtil { private static final CommonLog log = LogFactory.createLog(); public static boolean isValidDevice(Device device){ // if (UpnpUtil.isMediaRenderDevice(device)){ // return true; // } if (UpnpUtil.isMediaServerDevice(device) && !UpnpUtil.isLocalIpAddress(device)){ return true; } return false; } public static boolean isMediaServerDevice(Device device){ if ("urn:schemas-upnp-org:device:MediaServer:1".equalsIgnoreCase(device.getDeviceType())){ return true; } return false; } public static boolean isMediaRenderDevice(Device device){ if ("urn:schemas-upnp-org:device:MediaRenderer:1".equalsIgnoreCase(device.getDeviceType())){ return true; } return false; } public final static String DLNA_OBJECTCLASS_CONTAINER = "object.container"; public final static String DLNA_OBJECTCLASS_MUSICID = "object.item.audioItem"; public final static String DLNA_OBJECTCLASS_VIDEOID = "object.item.videoItem"; public final static String DLNA_OBJECTCLASS_PHOTOID = "object.item.imageItem"; //temp add public final static String DLNA_OBJECTCLASS_FILEID = "object.item.textItem"; public static boolean isNULLItem(Item item){ String objectClass = item.getObjectClass(); if (objectClass != null && objectClass.contains(DLNA_OBJECTCLASS_CONTAINER)) { return true; } return false; } public static boolean isAudioItem(Item item){ String objectClass = item.getObjectClass(); if (objectClass != null && objectClass.contains(DLNA_OBJECTCLASS_MUSICID)) { return true; } return false; } public static boolean isVideoItem(Item item){ String objectClass = item.getObjectClass(); if (objectClass != null && objectClass.contains(DLNA_OBJECTCLASS_VIDEOID)) { return true; } return false; } public static boolean isPictureItem(Item item){ String objectClass = item.getObjectClass(); if (objectClass != null && objectClass.contains(DLNA_OBJECTCLASS_PHOTOID)) { return true; } return false; } public static boolean isFileItem(Item item){ String objectClass = item.getObjectClass(); if (objectClass != null && objectClass.contains(DLNA_OBJECTCLASS_FILEID)) { return true; } return false; } public static boolean isLocalIpAddress(Device device){ try { String addrip = device.getLocation(); addrip = addrip.substring("http://".length(),addrip.length()); addrip = addrip.substring(0,addrip.indexOf(":")); boolean ret = isLocalIpAddress(addrip); ret = false; return ret; } catch (Exception e) { e.printStackTrace(); } return false; } public static boolean isLocalIpAddress(String checkip) { boolean ret=false; if(checkip != null) { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { String ip = inetAddress.getHostAddress().toString(); if(ip == null) { continue; } if(checkip.equals(ip)) { return true; } } } } } catch (SocketException ex) { ex.printStackTrace(); } } return ret; } }