Back to project page SmartTools.
The source code is released under:
GNU General Public License
If you think the Android project SmartTools listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.nj.simba; /* w ww . jav a2s .c o m*/ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class IDeviceInfo { public AppInfo[] mAppsInfo; public MemInfo mMemInfo; public DeviceFeature mFeatures; byte[] toBytes() throws IOException { ByteArrayOutputStream ba = new ByteArrayOutputStream(); DataOutputStream ds = new DataOutputStream(ba); /** * 1. write mAppsInfo */ ds.writeInt(mAppsInfo.length); for (AppInfo app : mAppsInfo) { ds.writeUTF(app.name); ds.writeUTF(app.pkgName); ds.writeUTF(app.pkgPath); ds.writeUTF(app.versionName); ds.writeUTF(app.installDate); ds.writeBoolean(app.isSystem); ds.writeBoolean(app.isCtsPass); ds.writeBoolean(app.isRunning); ds.writeInt(app.uid); ds.writeInt(app.size); ds.writeInt(app.icon.length); ds.write(app.icon); } /** * 2. write mMemInfo */ ds.writeLong(mMemInfo.romTotal); ds.writeLong(mMemInfo.romAvail); ds.writeLong(mMemInfo.ramTotal); ds.writeLong(mMemInfo.ramAvail); ds.writeLong(mMemInfo.sd0Total); ds.writeLong(mMemInfo.sd0Avail); ds.writeUTF(mMemInfo.sd0Path); /** * 3. write mFeatures */ ds.writeInt(mFeatures.lcdWidth); ds.writeInt(mFeatures.lcdHeight); ds.writeFloat(mFeatures.lcdDensity); ds.writeInt(mFeatures.androidVersion); ds.writeUTF(mFeatures.imageVersion); ds.writeUTF(mFeatures.deviceName); return ba.toByteArray(); } public static IDeviceInfo creator(byte[] bytes) throws IOException { IDeviceInfo deviceInfo = new IDeviceInfo(); ByteArrayInputStream bis = new ByteArrayInputStream(bytes); DataInputStream din = new DataInputStream(bis); /** * 1. read mAppsInfo */ int size = din.readInt(); deviceInfo.mAppsInfo = new AppInfo[size]; for (int i = 0; i < size; i++) { deviceInfo.mAppsInfo[i] = new AppInfo(); deviceInfo.mAppsInfo[i].name = din.readUTF(); deviceInfo.mAppsInfo[i].pkgName = din.readUTF(); deviceInfo.mAppsInfo[i].pkgPath = din.readUTF(); deviceInfo.mAppsInfo[i].versionName = din.readUTF(); deviceInfo.mAppsInfo[i].installDate = din.readUTF(); deviceInfo.mAppsInfo[i].isSystem = din.readBoolean(); deviceInfo.mAppsInfo[i].isCtsPass = din.readBoolean(); deviceInfo.mAppsInfo[i].isRunning = din.readBoolean(); deviceInfo.mAppsInfo[i].uid = din.readInt(); deviceInfo.mAppsInfo[i].size = din.readInt(); System.out.println("uid:" + deviceInfo.mAppsInfo[i].uid); deviceInfo.mAppsInfo[i].icon = new byte[din.readInt()]; System.out.println("icon length:" + deviceInfo.mAppsInfo[i].icon.length); din.readFully(deviceInfo.mAppsInfo[i].icon); } /** * 2. read mMemInfo */ deviceInfo.mMemInfo = new MemInfo(); deviceInfo.mMemInfo.romTotal = din.readLong(); deviceInfo.mMemInfo.romAvail = din.readLong(); deviceInfo.mMemInfo.ramTotal = din.readLong(); deviceInfo.mMemInfo.ramAvail = din.readLong(); deviceInfo.mMemInfo.sd0Total = din.readLong(); deviceInfo.mMemInfo.sd0Avail = din.readLong(); deviceInfo.mMemInfo.sd0Path = din.readUTF(); /** * 3. read mFeatures */ deviceInfo.mFeatures = new DeviceFeature(); deviceInfo.mFeatures.lcdWidth = din.readInt(); deviceInfo.mFeatures.lcdHeight = din.readInt(); deviceInfo.mFeatures.lcdDensity = din.readFloat(); deviceInfo.mFeatures.androidVersion = din.readInt(); deviceInfo.mFeatures.imageVersion = din.readUTF(); deviceInfo.mFeatures.deviceName = din.readUTF(); return deviceInfo; } public static class AppInfo { public String name; public String pkgName; public String pkgPath; public String versionName; public String installDate; public boolean isSystem; public boolean isCtsPass; public boolean isRunning; public int uid; public int size; public byte[] icon; } public static class MemInfo { public long romTotal; public long romAvail; public long ramTotal; public long ramAvail; public long sd0Total; public long sd0Avail; public String sd0Path; /*************** long sd2Total; long sd2Avail; String sd2Path; ***************/ } public static class DeviceFeature { public float lcdDensity; public int lcdWidth; public int lcdHeight; public int androidVersion; public String imageVersion; public String deviceName; /******************** String linuxVersion; String glVersion; String cpuVersion; String cpuFreq; String androidVersion; ***********************/ } }