@Override public void onPersistenceFileDamage() { getPersistenceFile().delete(); } }
public VDeviceManagerService() { mPersistenceLayer.read(); for (int i = 0; i < mDeviceInfos.size(); i++) { VDeviceInfo info = mDeviceInfos.valueAt(i); addDeviceInfoToPool(info); } }
@Override public VDeviceInfo getDeviceInfo(int userId) throws RemoteException { VDeviceInfo info; synchronized (mDeviceInfos) { info = mDeviceInfos.get(userId); if (info == null) { info = generateDeviceInfo(); mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } return info; }
private VDeviceInfo generateRandomDeviceInfo() { VDeviceInfo info = new VDeviceInfo(); String value; do { value = generate10(15); info.deviceId = value; } while (mPool.deviceIds.contains(value)); do { value = generate16(16); info.androidId = value; } while (mPool.androidIds.contains(value)); do { value = generateMac(); info.wifiMac = value; } while (mPool.wifiMacs.contains(value)); do { value = generateMac(); info.bluetoothMac = value; } while (mPool.bluetoothMacs.contains(value)); do { value = generate10(20); info.iccId = value; } while (mPool.iccIds.contains(value)); info.serial = generateSerial(); addDeviceInfoToPool(info); return info; }
@Override public VDeviceInfo getDeviceInfo(int userId) { VDeviceInfo info; synchronized (mDeviceInfos) { info = mDeviceInfos.get(userId); if (info == null) { info = generateRandomDeviceInfo(); mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } return info; }
@Override public void readPersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); infos.clear(); int size = p.readInt(); while (size-- > 0) { int userId = p.readInt(); VDeviceInfo info = new VDeviceInfo(p); infos.put(userId, info); } }
@Override public void updateDeviceInfo(int userId, VDeviceInfo info) throws RemoteException { synchronized (mDeviceInfos) { if (info != null) { mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } }
@SuppressLint("HardwareIds") private VDeviceInfo generateDeviceInfo() { VDeviceInfo info = generateRandomDeviceInfo(); Context context = VirtualCore.get().getContext(); if (context == null) { return info; } try { String deviceId = null; final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); if (tm != null) { deviceId = tm.getDeviceId(); } if (deviceId != null) { info.deviceId = deviceId; } String android_id = Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID); if (android_id != null) { info.androidId = android_id; } info.serial = Build.SERIAL; } catch (Throwable e) { e.printStackTrace(); } return info; }
@Override public boolean onCreate() { Context context = getContext(); DaemonService.startup(context); if (!VirtualCore.get().isStartup()) { return true; } VPackageManagerService.systemReady(); addService(ServiceManagerNative.PACKAGE, VPackageManagerService.get()); VActivityManagerService.systemReady(context); addService(ServiceManagerNative.ACTIVITY, VActivityManagerService.get()); addService(ServiceManagerNative.USER, VUserManagerService.get()); VAppManagerService.systemReady(); addService(ServiceManagerNative.APP, VAppManagerService.get()); BroadcastSystem.attach(VActivityManagerService.get(), VAppManagerService.get()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { addService(ServiceManagerNative.JOB, VJobSchedulerService.get()); } VNotificationManagerService.systemReady(context); addService(ServiceManagerNative.NOTIFICATION, VNotificationManagerService.get()); VAppManagerService.get().scanApps(); VAccountManagerService.systemReady(); addService(ServiceManagerNative.ACCOUNT, VAccountManagerService.get()); addService(ServiceManagerNative.VS, VirtualStorageService.get()); addService(ServiceManagerNative.DEVICE, VDeviceManagerService.get()); addService(ServiceManagerNative.VIRTUAL_LOC, VirtualLocationService.get()); return true; }
public VDeviceManagerService() { mPersistenceLayer.read(); for (int i = 0; i < mDeviceInfos.size(); i++) { VDeviceInfo info = mDeviceInfos.valueAt(i); addDeviceInfoToPool(info); } }
@Override public VDeviceInfo getDeviceInfo(int userId, int AppId) { VDeviceInfo info; synchronized (mDeviceInfos) { info = mDeviceInfos.get(userId); if (info == null) { info = generateRandomDeviceInfo(); mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } if (AppId > 0) { char[] chars = info.bluetoothMac.toCharArray(); char[] newchars = new char[chars.length]; int count = 0; for (char aChar : chars) { if ((count + 1) % 3 != 0) newchars[count] = (char) ((aChar + AppId) % 26 + 65); else newchars[count] = 58; count += 1; } info.bluetoothMac = String.valueOf(newchars); } return info; }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }
@Override public void onPersistenceFileDamage() { getPersistenceFile().delete(); } }
@Override public void updateDeviceInfo(int userId, VDeviceInfo info) { synchronized (mDeviceInfos) { if (info != null) { mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } }
public VDeviceManagerService() { mPersistenceLayer.read(); for (int i = 0; i < mDeviceInfos.size(); i++) { VDeviceInfo info = mDeviceInfos.valueAt(i); addDeviceInfoToPool(info); } }
@Override public void readPersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); infos.clear(); int size = p.readInt(); while (size-- > 0) { int userId = p.readInt(); VDeviceInfo info = new VDeviceInfo(p); infos.put(userId, info); } }
@Override public void onPersistenceFileDamage() { getPersistenceFile().delete(); } }
@Override public void updateDeviceInfo(int userId, VDeviceInfo info) { synchronized (mDeviceInfos) { if (info != null) { mDeviceInfos.put(userId, info); mPersistenceLayer.save(); } } }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }