`

读取设备信息

阅读更多

----------------------------------------------------------

 

package com.lilin.imei;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import android.app.Activity;
import android.app.ActivityManager;
import android.graphics.Color;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.os.SystemClock;
import android.telephony.TelephonyManager;
import android.widget.EditText;
import android.widget.TextView;

public class Main extends Activity {
	TextView network_text;
	EditText imei_et, imsi_et;
	TextView rom_tv, romremimd_tv, mac_tv, sdcard_tv, cpu_tv, version_tv,
			style_tv, number_tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		setTitle("设备信息");
		setTitleColor(Color.YELLOW);
		getView();

		TelephonyManager tm = (TelephonyManager) this
				.getSystemService(TELEPHONY_SERVICE);
		// 区分手机网络
		String operator = tm.getSimOperator();
		if (operator != null) {
			if (operator.equals("46000") || operator.equals("46002")
					|| operator.equals("46007")) {
				network_text.setText("中国移动");
			} else if (operator.equals("46001")) {
				network_text.setText("中国联通");
			} else if (operator.equals("46003")) {
				network_text.setText("中国电信");
			}
		}
		imei_et.setText(tm.getDeviceId());// IMEI
		imsi_et.setText(tm.getSubscriberId());// IMSI
		String rom = formatSize(getRomMemroy()) + " / "
				+ formatSize(getRomRemind());
		rom_tv.setText(rom);// ROM
		mac_tv.setText(getMacInfo());// MAC地址
		String sdcard = formatSize(getSDCard()) + " / "
				+ formatSize(getSDCardMemory());
		sdcard_tv.setText(sdcard);// SDCard
		String a[] = getCpuInfo();
		cpu_tv.setText(a[1] + "MHz");// 处理器
		String b[] = getVersion();
		version_tv.setText(b[1]);// android版本
		style_tv.setText(b[2]);// 手机型号

		// NETWORK_TYPE_UNKNOWN 网络类型未知 0
		// NETWORK_TYPE_GPRS GPRS网络 1
		// NETWORK_TYPE_EDGE EDGE网络 2
		// NETWORK_TYPE_UMTS UMTS网络 3
		// NETWORK_TYPE_HSDPA HSDPA网络 8
		// NETWORK_TYPE_HSUPA HSUPA网络 9
		// NETWORK_TYPE_HSPA HSPA网络 10
		// NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4
		// NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5
		// NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6
		// NETWORK_TYPE_1xRTT 1xRTT网络 7
		// System.out.println("获取SIM卡提供的移动国家码和移动网络码=" + tm.getNetworkType());
		// System.out.println("服务商名称=" + tm.getSimOperatorName());
		// System.out.println("SIM卡的序列号=" + tm.getSimSerialNumber());
		// System.out.println("手机号码=" + tm.getLine1Number());
		// System.out.println("设备的软件版本号=" + tm.getDeviceSoftwareVersion());

		//
		// /*
		// * 电话状态: 1.tm.CALL_STATE_IDLE=0 无活动 2.tm.CALL_STATE_RINGING=1 响铃
		// * 3.tm.CALL_STATE_OFFHOOK=2 摘机
		// */
		// tm.getCallState();// int
		//
		// /*
		// * 电话方位:
		// */
		// tm.getCellLocation();// CellLocation
		// /*
		// * 附近的电话的信息: 类型:List<NeighboringCellInfo>
		// * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
		// */
		// tm.getNeighboringCellInfo();// List<NeighboringCellInfo>
		//
		// /*
		// * 获取ISO标准的国家码,即国际长途区号。 注意:仅当用户已在网络注册后有效。 在CDMA网络中结果也许不可靠。
		// */
		// tm.getNetworkCountryIso();// String
		//
		// /*
		// * MCC+MNC(mobile country code + mobile network code)
		// 注意:仅当用户已在网络注册时有效。
		// * 在CDMA网络中结果也许不可靠。
		// */
		// tm.getNetworkOperator();// String
		//
		// /*
		// * 按照字母次序的current registered operator(当前已注册的用户)的名字 注意:仅当用户已在网络注册时有效。
		// * 在CDMA网络中结果也许不可靠。
		// */
		// tm.getNetworkOperatorName();// String
		//
		// /*
		// * 手机类型: 例如: PHONE_TYPE_NONE 无信号 PHONE_TYPE_GSM GSM信号 PHONE_TYPE_CDMA
		// * CDMA信号
		// */
		// tm.getPhoneType();// int
		//
		// /*
		// * Returns the ISO country code equivalent for the SIM provider's
		// * country code. 获取ISO国家码,相当于提供SIM卡的国家码。
		// */
		// tm.getSimCountryIso();// String
		//

		// /*
		// * SIM的状态信息: SIM_STATE_UNKNOWN 未知状态 0 SIM_STATE_ABSENT 没插卡 1
		// * SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2 SIM_STATE_PUK_REQUIRED
		// * 锁定状态,需要用户的PUK码解锁 3 SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
		// * SIM_STATE_READY 就绪状态 5
		// */
		// tm.getSimState();// int
		//
		//
		// /*
		// * 取得和语音邮件相关的标签,即为识别符 需要权限:READ_PHONE_STATE
		// */
		// tm.getVoiceMailAlphaTag();// String
		//
		// /*
		// * 获取语音邮件号码: 需要权限:READ_PHONE_STATE
		// */
		// tm.getVoiceMailNumber();// String
		//
		// /*
		// * ICC卡是否存在
		// */
		// tm.hasIccCard();// boolean
		//
		// /*
		// * 是否漫游: (在GSM用途下)
		// */
		// tm.isNetworkRoaming();//

	}

	public void getView() {
		network_text = (TextView) findViewById(R.id.network_text);
		imei_et = (EditText) findViewById(R.id.imei_et);
		imsi_et = (EditText) findViewById(R.id.imsi_et);
		rom_tv = (TextView) findViewById(R.id.rom_et);
		mac_tv = (TextView) findViewById(R.id.mac_et);
		sdcard_tv = (TextView) findViewById(R.id.sdcard_et);
		cpu_tv = (TextView) findViewById(R.id.cpu_et);
		version_tv = (TextView) findViewById(R.id.version_et);
		style_tv = (TextView) findViewById(R.id.style_et);
		number_tv = (TextView) findViewById(R.id.number_et);
	}

	// 获得ROM的总大小
	public long getRomMemroy() {
		long romInfo;
		romInfo = getTotalInternalMemorySize();
		return romInfo;
	}

	// 获得ROM的剩余大小
	public long getRomRemind() {
		long romInfo;
		romInfo = getTotalInternalMemorySize();
		File path = Environment.getDataDirectory();
		StatFs stat = new StatFs(path.getPath());
		long blockSize = stat.getBlockSize();
		long availableBlocks = stat.getAvailableBlocks();
		romInfo = blockSize * availableBlocks;
		return romInfo;
	}

	// 获得ROM的总大小
	public long getTotalInternalMemorySize() {
		File path = Environment.getDataDirectory();
		StatFs stat = new StatFs(path.getPath());
		long blockSize = stat.getBlockSize();
		long totalBlocks = stat.getBlockCount();
		return totalBlocks * blockSize;
	}

	public String[] getVersion() {
		String[] version = { "null", "null", "null", "null" };
		String str1 = "/proc/version";
		String str2;
		String[] arrayOfString;
		try {
			FileReader localFileReader = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(
					localFileReader, 8192);
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			version[0] = arrayOfString[2];// KernelVersion
			localBufferedReader.close();
		} catch (IOException e) {
		}
		version[1] = Build.VERSION.RELEASE;// firmware version
		version[2] = Build.MODEL;// model
		version[3] = Build.DISPLAY;// system version
		return version;
	}

	// 系统可用的内存大小
	public long getRAMMemory() {
		ActivityManager am = (ActivityManager) this
				.getSystemService(ACTIVITY_SERVICE);
		ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
		am.getMemoryInfo(mi);
		return mi.availMem;
	}

	// CPU信息
	public String[] getCpuInfo() {
		String str1 = "/proc/cpuinfo";
		String str2 = "";
		String[] cpuInfo = { "", "" };
		String[] arrayOfString;
		try {
			FileReader fr = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			for (int i = 2; i < arrayOfString.length; i++) {
				cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
			}
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			cpuInfo[1] += arrayOfString[2];
			localBufferedReader.close();
		} catch (IOException e) {
		}
		return cpuInfo;
	}

	// 开机时间
	private String getTimes() {
		long ut = SystemClock.elapsedRealtime() / 1000;
		if (ut == 0) {
			ut = 1;
		}
		int m = (int) ((ut / 60) % 60);
		int h = (int) ((ut / 3600));
		return h + "时" + m + "分";
	}

	// SDCard总大小
	public long getSDCard() {
		long sdCardInfo = 0;
		String state = Environment.getExternalStorageState();
		if (Environment.MEDIA_MOUNTED.equals(state)) {
			File sdcardDir = Environment.getExternalStorageDirectory();
			StatFs sf = new StatFs(sdcardDir.getPath());
			long bSize = sf.getBlockSize();
			long bCount = sf.getBlockCount();
			sdCardInfo = bSize * bCount;// 总大小
		}
		return sdCardInfo;
	}

	// SDCard可用大小
	public long getSDCardMemory() {
		long sdCardInfo = 0;
		String state = Environment.getExternalStorageState();
		if (Environment.MEDIA_MOUNTED.equals(state)) {
			File sdcardDir = Environment.getExternalStorageDirectory();
			StatFs sf = new StatFs(sdcardDir.getPath());
			long bSize = sf.getBlockSize();
			long availBlocks = sf.getAvailableBlocks();
			sdCardInfo = bSize * availBlocks;// 可用大小
		}
		return sdCardInfo;
	}

	// 获得MAC地址
	public String getMacInfo() {
		String mac;
		WifiManager wifiManager = (WifiManager) this
				.getSystemService(WIFI_SERVICE);
		WifiInfo wifiInfo = wifiManager.getConnectionInfo();
		if (wifiInfo.getMacAddress() != null) {
			mac = wifiInfo.getMacAddress();
		} else {
			mac = "Fail";
		}
		return mac;
	}

	// 格式化
	public String formatSize(long size) {
		String suffix = null;
		float fSize = 0;

		if (size >= 1024) {
			suffix = "KB";
			fSize = size / 1024;
			if (fSize >= 1024) {
				suffix = "MB";
				fSize /= 1024;
			}
			if (fSize >= 1024) {
				suffix = "GB";
				fSize /= 1024;
			}
		} else {
			fSize = size;
		}
		java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
		StringBuilder resultBuffer = new StringBuilder(df.format(fSize));
		if (suffix != null)
			resultBuffer.append(suffix);
		return resultBuffer.toString();
	}

}

 

分享到:
评论

相关推荐

    usbhid 读取设备信息

    在C#编程环境下,通过USB HID接口读取设备信息涉及了几个关键知识点,包括USB设备通信协议、HID类库的使用以及C#编程技术。 首先,USB设备通信涉及USB驱动程序模型。在Windows操作系统中,USB设备连接后,系统会...

    使用mwi读取设备信息

    在这个场景下,"mwi"(可能指的是Management Wizard Interface或者某种自定义的工具)是用来借助WMI读取设备信息的方法。本文将深入探讨如何使用WMI来获取USB设备的信息。 WMI是微软对Web-Based Enterprise ...

    C#读取设备信息(源代码下载

    在这个场景中,"C#读取设备信息"指的是利用C#编程语言来获取计算机硬件设备的相关信息,如网络适配器(Network Card)的配置、状态等。在ASP.NET环境中,这可能涉及到服务器端的设备监控或管理功能。 首先,我们...

    易语言读取设备管理器源码

    易语言是一种中文编程语言,它提供了方便的API接口来与系统进行交互,包括读取设备信息。本源码示例旨在介绍如何利用易语言来实现读取设备管理器中的硬件信息。 设备管理器是Windows操作系统中用于查看和管理计算机...

    iOS-iBeacon搜索读取硬件信息

    总之,iOS-iBeacon开发涉及到使用Core Location框架、配置CLBeaconRegion、监听iBeacon事件以及读取设备信息等多个步骤。结合"ibeaconZFJDemo"项目,开发者可以深入理解并实践这些知识点,为实现位置感知和交互功能...

    java读取设备信息实时监测数据接口

    工程师为了监测产线稳定性,需提取出震动...HttpClientTest项目能读取接口数据。并能计算机最大幅度值。使用BigDecimal数据类型保证精度不丢失。PostData模拟监测生产线设备产生的数据,给HttpClientTest提供数据接口。

    安卓设备读取USB外设信息

    带OTG功能安卓设备读取USB外设信息 可以通过AS调试读出 , 过滤关键字 "Li_Debug" , 一次显示使用USB外设 格式举例 厂商/VendorId: 0x10C4 产品/ProductId: 0xEA60 设备/DeviceId: 0x7D2 接口数/InterfaceCount: 1 ...

    Android 读取信息实例.doc

    综上所述,这个Android应用实例展示了如何利用Java编程和Android SDK来实现读取设备信息的功能。通过执行系统命令和解析返回结果,可以获取到诸如操作系统版本、硬件信息等数据,并在用户界面中展示。此外,良好的...

    获取USB设备信息

    在IT领域,USB(Universal Serial Bus)是一种广泛使用的接口,用于连接...通过“UsbInfo”库,我们可以学习到如何在程序中枚举USB设备、读取设备信息以及处理设备事件,这对于开发与USB设备相关的应用具有重要意义。

    教学设备管理系统c++.doc

    * 读取设备信息:系统从文件中读取设备信息。 * 删除设备信息:用户可以删除设备信息。 * 恢复设备信息:系统可以恢复被删除的设备信息。 6. 试验结果 系统的试验结果表明,系统能够正确地添加、查询、修改、保存...

    (源码)基于C语言的爱信云设备管理系统.zip

    处理设备的不同状态,如从Flash读取设备信息、联网、服务器连接等。 确保设备在不同状态下的稳定运行。 2. 从Flash读取和设置设备信息 在设备启动时从Flash读取设备信息。 在需要时更新设备信息,确保数据的...

    读取PCI插槽上的硬件配置信息

    "读取PCI插槽上的硬件配置信息" ...读取PCI插槽上的硬件配置信息是获取PCI设备的基本信息的重要步骤,需要了解PCI配置空间的物理地址和PCI设备的vendorID和deviceID,并使用VxD来实现读取PCI配置信息的功能。

    Python 代码的主要功能是从给定的日志文件和设备列表中提取特定设备(华为和华三)的用户账号信息

    getDevFile函数从 Excel 文件中读取设备信息,而write_to_excel函数将提取的设备账号信息写入到新的 Excel 文件中。这些函数使用了openpyxl和xlsxwriter模块来处理 Excel 文件,实现了数据的读取和写入操作。

    Delphi读取Usb设备所属端口(UsbView)

    总之,Delphi通过调用Windows API能够有效地读取USB设备的端口信息,这对于开发涉及USB设备通信的应用,如Android设备调试、数据传输等场景至关重要。正确理解和使用这些API,能让你的程序更加健壮和高效。

    Delphi PC端读取设备文件系统列表及设备信息

    总的来说,"Delphi PC端读取设备文件系统列表及设备信息"项目涵盖了系统编程、设备驱动接口、注册表操作等多个IT领域,需要开发者具备扎实的编程基础和系统级知识。完成这样的项目不仅可以提升技术能力,还能加深对...

    Android实例之读取设备联系人

    总的来说,"Android实例之读取设备联系人"是一个实用的教程,它涵盖了如何在Delphi环境下利用Android API读取设备联系人信息的基本步骤和注意事项,对于开发者来说是了解和学习Android平台开发的重要实践案例。

    电信设备-基于一维码的多信息方法.zip

    4. 扫描读取:使用手持式或固定式一维码读取器,快速准确地读取设备信息。 5. 实时更新:通过网络连接,读取器可以实时将扫描信息同步到系统,进行设备状态更新、维修记录登记等操作。 此外,一维码在库存管理、...

    电信设备-手持型信息读取设备.zip

    手持型信息读取设备在现代通信行业中扮演着重要的角色,特别是在物流、仓储、零售和医疗等领域。这些设备通常集成了条形码、二维码扫描、RFID(无线频率识别)等功能,能够快速、准确地采集和处理数据。下面将对这类...

    生成pci设备树的简单实现

    2. **读取设备信息**: 使用`sysfs`接口(例如`pread64`函数)读取对应设备的属性文件,获取供应商ID、设备ID等信息,并创建对应的设备节点。 3. **处理子总线**: 检查设备是否有子总线(即子桥设备),通过`/...

Global site tag (gtag.js) - Google Analytics