㈠ java判斷設備是android還是ios
1、通常一個http請求會帶上用戶設備信息,這個信息被存儲在請求頭的use-agent里
2、可通過類似
StringuserAgent=request.getHeader("user-agent");
這樣的方法獲取到這個use-agent
use-agent字元串中的內容類似:
Mozilla/5.0(Linux;U;Android3.0;en-us;XoomBuild/HRI39)
AppleWebKit/534.13(KHTML,likeGecko)Version/4.0Safari/534.13
這些信息「足以」判斷是安卓還是IOS。
㈡ java 列印 PrintService 如何獲取客戶端列印機
java可以使用javax提供的print工具類,訪問到系統的列印機基本信息,示例如下:
import java.io.File;
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.JFileChooser;
public class Printers
{
public static void main(String[] args)
{
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//查找所有的可用的列印服務
PrintService[] printService = PrintServiceLookup.lookupPrintServices(flavor, pras);
for (int i =0; i<printService.length ;i++ )
{
System.out.println(printService[i].getName());
}
}
}
㈢ JAVA如何獲取區域網內所有安卓設備的ip地址,MAC以及序列號
1.得到區域網網段,可由自己機器的IP來確定 (也可以手動獲取主機IP-CMD-ipconfig /all)
2.根據IP類型,一次遍歷區域網內IP地址
JAVA類,編譯之後直接運行便可以得到區域網內所有IP,具體怎樣使用你自己編寫相應代碼調用便可
代碼如下::
package bean;
import java.io.*;
import java.util.*;
public class Ip{
static public HashMap ping; //ping 後的結果集
public HashMap getPing(){ //用來得到ping後的結果集
return ping;
}
//當前線程的數量, 防止過多線程摧毀電腦
static int threadCount = 0;
public Ip() {
ping = new HashMap();
}
public void Ping(String ip) throws Exception{
//最多30個線程
while(threadCount>30)
Thread.sleep(50);
threadCount +=1;
PingIp p = new PingIp(ip);
p.start();
}
public void PingAll() throws Exception{
//首先得到本機的IP,得到網段
InetAddress host = InetAddress.getLocalHost();
String hostAddress = host.getHostAddress();
int k=0;
k=hostAddress.lastIndexOf(".");
String ss = hostAddress.substring(0,k+1);
for(int i=1;i <=255;i++){ //對所有區域網Ip
String iip=ss+i;
Ping(iip);
}
//等著所有Ping結束
while(threadCount>0)
Thread.sleep(50);
}
public static void main(String[] args) throws Exception{
Ip ip= new Ip();
ip.PingAll();
java.util.Set entries = ping.entrySet();
Iterator iter=entries.iterator();
String k;
while(iter.hasNext()){
Map.Entry entry=(Map.Entry)iter.next();
String key=(String)entry.getKey();
String value=(String)entry.getValue();
if(value.equals("true"))
System.out.println(key+"-->"+value);
}
}
class PingIp extends Thread{
public String ip; // IP
public PingIp(String ip){
this.ip=ip;
}
public void run(){
try{
Process p= Runtime.getRuntime().exec ("ping "+ip+ " -w 300 -n 1");
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
//讀取結果行
for (int i=1 ; i <7; i++)
input.readLine();
String line= input.readLine();
if (line.length() <17 || line.substring(8,17).equals("timed out"))
ping.put(ip,"false");
else
ping.put(ip,"true");
//線程結束
threadCount -= 1;
}catch (IOException e){}
}
}
}
㈣ 如何通過web頁獲取手機設備ID
WEB這東西,本來就是跨平台的東西,對於不同平台就有不同的瀏覽器,不同廠家的瀏覽器又不太一樣。尤其這種比較偏的底層介面。就拿開發Android的WEB瀏覽器常用的WebView,就本身N個版本,介面改了又改。你的網頁還要跨平台,不管Android,還是WindowsPhone,還是……,適應於他們的變化有多復雜,自己要三思。
最後,我說我不知道常用的手機瀏覽器有沒有這種介面,你生氣不看
網頁瀏覽器又不是你造的,你可以任意改。除非你做那種混合型的App來讓用戶瀏覽自己的網站,內嵌WebView,通過JS和App交互,獲取你需要的IMEI等等信息。
補充:竟然沒人看到真正的答案。單純Web頁面是無法獲取IMEI,除非W3C修訂JavaScript標准,增加介面,並讓瀏覽器廠商開始支持。目前想獲取IMEI,必須是app和Web頁面相結合方式。就如當前有個hbuilder開發工具,DCloud開發的。可以調用手機系統API,原理類似於Java反射技術。他們封裝的比較好。可以直接通過js調用。當然最後發布的不是真正的純Web頁面,是一個app安裝包。這裡面的語法不是在任何瀏覽器都能運行的。但發布的安裝包,內部封裝好的瀏覽器是可以支持相應的js方法。