Java tutorial
// ------------------------------------------------------------------------------ // com.DPFaragir DPFUtils Java Class // // Dadeh Pardazane Faragir ( DPF ) Co. // // Web: http://www.dpfaragir.com // // Developed By: Babak Yaghoobi // // Email #1: yaghoobi@dpfaragir.com // Email #2: b_yaghobi@yahoo.com // // ------------------------------------------------------------------------------ // // 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 com.DPFaragir; import android.content.Context; import android.net.ConnectivityManager; import java.io.*; import java.net.*; import java.util.*; import org.apache.http.conn.util.InetAddressUtils; public class DPFUtils { private Context mContext; //-------------------------------------------------------------------------- // DPFUtils Constructor //-------------------------------------------------------------------------- public void DPFUtils(Context context) { mContext = context; } //-------------------------------------------------------------------------- // Convert byte array to hex string // @param bytes // @return //-------------------------------------------------------------------------- public static String bytesToHex(byte[] bytes) { StringBuilder sbuf = new StringBuilder(); for (int idx = 0; idx < bytes.length; idx++) { int intVal = bytes[idx] & 0xff; if (intVal < 0x10) sbuf.append("0"); sbuf.append(Integer.toHexString(intVal).toUpperCase()); } return sbuf.toString(); } //-------------------------------------------------------------------------- // Get utf8 byte array. // @param str // @return array of NULL if error was found //-------------------------------------------------------------------------- public static byte[] getUTF8Bytes(String str) { try { return str.getBytes("UTF-8"); } catch (Exception ex) { return null; } } //-------------------------------------------------------------------------- // Load UTF8withBOM or any ansi text file. // @param filename // @return // @throws java.io.IOException //-------------------------------------------------------------------------- public static String loadFileAsString(String filename) throws java.io.IOException { final int BUFLEN = 1024; BufferedInputStream is = new BufferedInputStream(new FileInputStream(filename), BUFLEN); try { ByteArrayOutputStream baos = new ByteArrayOutputStream(BUFLEN); byte[] bytes = new byte[BUFLEN]; boolean isUTF8 = false; int read, count = 0; while ((read = is.read(bytes)) != -1) { if (count == 0 && bytes[0] == (byte) 0xEF && bytes[1] == (byte) 0xBB && bytes[2] == (byte) 0xBF) { isUTF8 = true; baos.write(bytes, 3, read - 3); // drop UTF8 bom marker } else { baos.write(bytes, 0, read); } count += read; } return isUTF8 ? new String(baos.toByteArray(), "UTF-8") : new String(baos.toByteArray()); } finally { try { is.close(); } catch (Exception ex) { } } } //-------------------------------------------------------------------------- // Returns MAC address of the given interface name. // @param interfaceName eth0, wlan0 or NULL=use first interface // @return mac address or empty string //-------------------------------------------------------------------------- public static String getMACAddress(String interfaceName) { try { List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { if (interfaceName != null) { if (!intf.getName().equalsIgnoreCase(interfaceName)) continue; } byte[] mac = intf.getHardwareAddress(); if (mac == null) return ""; StringBuilder buf = new StringBuilder(); for (int idx = 0; idx < mac.length; idx++) buf.append(String.format("%02X:", mac[idx])); if (buf.length() > 0) buf.deleteCharAt(buf.length() - 1); return buf.toString(); } } catch (Exception ex) { } // for now eat exceptions return ""; /*try { // this is so Linux hack return loadFileAsString("/sys/class/net/" +interfaceName + "/address").toUpperCase().trim(); } catch (IOException ex) { return null; }*/ } //-------------------------------------------------------------------------- // Get IP address from first non-localhost interface // @param ipv4 true=return ipv4, false=return ipv6 // @return address or empty string //-------------------------------------------------------------------------- public static String getIPAddress(boolean useIPv4) { 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 ""; } //-------------------------------------------------------------------------- // @return true if internet active //-------------------------------------------------------------------------- public final boolean isInternetActive() { // get Connectivity Manager object to check connection ConnectivityManager connec = (ConnectivityManager) mContext.getSystemService(mContext.CONNECTIVITY_SERVICE); // Check for network connections if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED || connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) { // if connected with internet //Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show(); return true; } else if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) { //Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show(); return false; } return false; } }