// check whether the str is a right IPv6 address
function checkIPv6(str) {
var idx = str.indexOf("::");
// there is no "::" in the ip address
if (idx == -1) {
var items = str.split(":");
if (items.length != 8) {
return false;
} else {
for (i in items) {
if (!isHex(items[i])) {
return false;
}
}
return true;
}
} else {
// at least, there are two "::" in the ip address
if (idx != str.lastIndexOf("::")) {
return false;
} else {
var items = str.split("::");
var items0 = items[0].split(":");
var items1 = items[1].split(":");
if ((items0.length + items1.length) > 7) {
return false;
} else {
for (i in items0) {
if (!isHex(items0[i])) {
return false;
}
}
for (i in items1) {
if (!isHex(items1[i])) {
return false;
}
}
return true;
}
}
}
}
// check whether every char of the str is a Hex char(0~9,a~f,A~F)
function isHex(str) {
if(str.length == 0 || str.length > 4) {
return false;
}
str = str.toLowerCase();
var ch;
for(var i=0; i< str.length; i++) {
ch = str.charAt(i);
if(!(ch >= '0' && ch <= '9') && !(ch >= 'a' && ch <= 'f')) {
return false;
}
}
return true;
}
- 1月 31 週四 201311:56
(For javascript)ipv6 check format function
- 1月 24 週四 201318:37
(Android 開發) 閃光燈
在AndroidManifest中註冊相應的權限:
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.autofocus"/>
打開閃光燈關鍵代碼:
Camera camera = Camera.open();
camera.startPreview();
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameter);
關閉閃關燈關鍵代碼:
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameter);
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.autofocus"/>
打開閃光燈關鍵代碼:
Camera camera = Camera.open();
camera.startPreview();
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameter);
關閉閃關燈關鍵代碼:
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameter);
- 1月 24 週四 201318:20
(Android 開發)如何取得網路介面和其關聯的 IP address
下面的程式可以將所有的網路介面和其關聯的 IP address 都顯示出來:
public String getPhoneIPAddrs()
{
String sAddr = "";
try
{
for (Enumeration<NetworkInterface> enumInterfaces =NetworkInterface.getNetworkInterfaces(); enumInterfaces.hasMoreElements(); )
{
// Get next network interface
NetworkInterface interface = enumInterfaces.nextElement();
for (Enumeration<InetAddress> enumIPAddrs =interface.getInetAddresses(); enumIPAddrs.hasMoreElements(); )
{
// Get next IP address of this interface
InetAddress inetAddr = enumIPAddrs.nextElement();
// Exclude loopback address
if (!inetAddr.isLoopbackAddress())
{
if (sAddr != "")
{
sAddr += ", ";
}
sAddr += "(" + interface.getDisplayName() + ") " + inetAddr.getHostAddress().toString();
}
}
}
}
catch (SocketException e)
{
e.printStackTrace();
}
return sAddr;
}
public String getPhoneIPAddrs()
{
String sAddr = "";
try
{
for (Enumeration<NetworkInterface> enumInterfaces =NetworkInterface.getNetworkInterfaces(); enumInterfaces.hasMoreElements(); )
{
// Get next network interface
NetworkInterface interface = enumInterfaces.nextElement();
for (Enumeration<InetAddress> enumIPAddrs =interface.getInetAddresses(); enumIPAddrs.hasMoreElements(); )
{
// Get next IP address of this interface
InetAddress inetAddr = enumIPAddrs.nextElement();
// Exclude loopback address
if (!inetAddr.isLoopbackAddress())
{
if (sAddr != "")
{
sAddr += ", ";
}
sAddr += "(" + interface.getDisplayName() + ") " + inetAddr.getHostAddress().toString();
}
}
}
}
catch (SocketException e)
{
e.printStackTrace();
}
return sAddr;
}
1
