㈠ 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方法。