Android Open Source - lifx-sdk-android L F X Network Utils






From Project

Back to project page lifx-sdk-android.

License

The source code is released under:

MIT License

If you think the Android project lifx-sdk-android 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

//
//  LFXNetworkUtils.java
//  LIFX// w ww.j a  va 2s  .  co m
//
//  Created by Jarrod Boyes on 24/03/14.
//  Copyright (c) 2014 LIFX Labs. All rights reserved.
//

package lifx.java.android.util;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.List;

import org.apache.http.conn.util.InetAddressUtils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.DhcpInfo;
import android.net.wifi.WifiManager;

public class LFXNetworkUtils
{
  @SuppressLint( "DefaultLocale")
  public static String getLocalHostAddress() 
  {
    boolean useIPv4 = true;
    
        try 
        {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) 
            {
                List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                for (InetAddress addr : addrs) 
                {
                    if (!addr.isLoopbackAddress()) 
                    {
                        String sAddr = addr.getHostAddress().toUpperCase();
                        boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); 
                        if (useIPv4) 
                        {
                            if (isIPv4) 
                            {
                                return sAddr;
                            }
                        } 
                        else 
                        {
                            if (!isIPv4) 
                            {
                                int delim = sAddr.indexOf('%'); // drop ip6 port suffix
                                return delim<0 ? sAddr : sAddr.substring(0, delim);
                            }
                        }
                    }
                }
            }
        } 
        catch (Exception ex) { } // for now eat exceptions
        return "";
    }
  
  
//  public static String getBroadcastAddress()
//  {
//    return "255.255.255.255";
//  }
  
//  public static String getBroadcastAddress()
//  {
//      String found_bcast_address = null;
//      System.setProperty( "java.net.preferIPv4Stack", "true"); 
//      
//      try
//      {
//           Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces();
//           while( niEnum.hasMoreElements())
//           {
//               NetworkInterface ni = niEnum.nextElement();
//               
//               Enumeration<InetAddress> iNetAddresses = ni.getInetAddresses();
//               while( iNetAddresses.hasMoreElements())
//               {
//                 InetAddress i = iNetAddresses.nextElement();
//                 System.out.println( "Address: " + i.getHostAddress());
//               }
//               
//               if( !ni.isLoopback())
//               {
//                  for( InterfaceAddress interfaceAddress : ni.getInterfaceAddresses())
//                  {
//                    if( interfaceAddress.getBroadcast() != null)
//                    {
//                      found_bcast_address = interfaceAddress.getBroadcast().toString();
//                      found_bcast_address = found_bcast_address.substring( 1);
//                    }
//                    else
//                    {
//                      System.out.println( "Found bcast address: " + interfaceAddress.toString());
//                    }
//                  }
//               }
//            }
//       }
//       catch( SocketException e)
//       {
//            e.printStackTrace();
//       }
//
//       return found_bcast_address;
//  }
  
  public static String getBroadcastAddress( Context context)
  {
      WifiManager wifi = (WifiManager) context.getSystemService( Context.WIFI_SERVICE);
      DhcpInfo dhcp = wifi.getDhcpInfo();

      int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
      byte[] quads = new byte[4];
      for (int k = 0; k < 4; k++)
        quads[k] = (byte) (broadcast >> (k * 8));
      try
    {
      return InetAddress.getByAddress(quads).getHostAddress();
    } 
      catch( UnknownHostException e)
    {
      e.printStackTrace();
    }
      
      return "255.255.255.255";
  }
  
  public static String getIPv4StringByStrippingIPv6Prefix( String in)
  {
    String ipv6Prefix = "::ffff:";
    
    if( in.startsWith( ipv6Prefix)) 
    {
      return in.substring( ipv6Prefix.length(), in.length());
    }
    
    return in;
  }
}




Java Source Code List

com.example.lifx_sdk_samples.LFXSDKLightEditLabelActivity.java
com.example.lifx_sdk_samples.LFXSDKLightListAdapter.java
com.example.lifx_sdk_samples.LFXSDKLightPowerActivity.java
com.example.lifx_sdk_samples.LFXSDKLightRandomColorActivity.java
com.example.lifx_sdk_samples.LFXSDKSamplesActivity.java
com.example.lifx_sdk_samples.LFXSDKTaggedLightCollectionListAdapter.java
lifx.java.android.client.LFXClient.java
lifx.java.android.constant.LFXSDKConstants.java
lifx.java.android.entities.LFXHSBKColor.java
lifx.java.android.entities.LFXLightTarget.java
lifx.java.android.entities.LFXTypes.java
lifx.java.android.entities.internal.LFXBinaryPath.java
lifx.java.android.entities.internal.LFXBinaryTargetID.java
lifx.java.android.entities.internal.LFXBinaryTypes.java
lifx.java.android.entities.internal.LFXDeviceMapping.java
lifx.java.android.entities.internal.LFXGatewayDescriptor.java
lifx.java.android.entities.internal.LFXMessageObservationDescriptor.java
lifx.java.android.entities.internal.LFXMessage.java
lifx.java.android.entities.internal.LFXSiteID.java
lifx.java.android.entities.internal.LFXTagMapping.java
lifx.java.android.entities.internal.LFXTarget.java
lifx.java.android.entities.internal.structle.LxProtocolDevice.java
lifx.java.android.entities.internal.structle.LxProtocolLight.java
lifx.java.android.entities.internal.structle.LxProtocolSensor.java
lifx.java.android.entities.internal.structle.LxProtocolWan.java
lifx.java.android.entities.internal.structle.LxProtocolWifi.java
lifx.java.android.entities.internal.structle.LxProtocol.java
lifx.java.android.entities.internal.structle.Lx.java
lifx.java.android.entities.internal.structle.StructleTypes.java
lifx.java.android.internal.LFXWiFiObserver.java
lifx.java.android.light.LFXLightCollection.java
lifx.java.android.light.LFXLight.java
lifx.java.android.light.LFXTaggedLightCollection.java
lifx.java.android.light.internal.LFXAllLightsCollection.java
lifx.java.android.network_context.LFXNetworkContext.java
lifx.java.android.network_context.internal.routing_table.LFXRoutingTable.java
lifx.java.android.network_context.internal.transport_manager.LFXTransportManager.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketGeneric.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketTCP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketUDP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXTCPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXUDPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.lan.LFXLANTransportManager.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryController.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryTableEntry.java
lifx.java.android.util.LFXByteUtils.java
lifx.java.android.util.LFXLog.java
lifx.java.android.util.LFXNetworkUtils.java
lifx.java.android.util.LFXTimerUtils.java