package my.app.Library; import java.util.ArrayList; import java.util.List; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.hardware.Sensor; import android.hardware.SensorManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.BatteryManager; import android.telephony.TelephonyManager; import my.app.activityclient.ClientListener; import Packet.AdvancedInformationPacket; public class AdvancedSystemInfo { boolean waitingBattery = true; ClientListener ctx; int channel; AdvancedInformationPacket p; public AdvancedSystemInfo(ClientListener c, int channel) { p = new AdvancedInformationPacket(); ctx = c; this.channel = channel; } public void getInfos() { phoneInfo(); networkInfo(); androidInfo(); sensorsInfo(); ctx.registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); /*while(waitingBattery) { try { Thread.sleep(10); } catch(Exception e) {} }*/ //ctx.handleData(channel, p.build()); } public void phoneInfo() { TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE); p.setPhoneNumber(tm.getLine1Number()); p.setIMEI(tm.getDeviceId()); p.setSoftwareVersion(tm.getDeviceSoftwareVersion()); p.setCountryCode(tm.getNetworkCountryIso()); p.setOperatorCode(tm.getNetworkOperator()); p.setOperatorName(tm.getNetworkOperatorName()); p.setSimOperatorCode(tm.getSimOperator()); p.setSimOperatorName(tm.getSimOperatorName()); p.setSimCountryCode(tm.getSimCountryIso()); p.setSimSerial(tm.getSimSerialNumber()); } public void networkInfo() { ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo network = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); p.setWifiAvailable(network.isAvailable()); p.setWifiConnectedOrConnecting(network.isConnectedOrConnecting()); p.setWifiExtraInfos(network.getExtraInfo()); p.setWifiReason(network.getReason()); network = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if(network != null && (network.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS || network.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE)) { p.setMobileNetworkName("2g"); } else p.setMobileNetworkName("3g"); p.setMobileNetworkAvailable(network.isAvailable()); p.setMobileNetworkConnectedOrConnecting(network.isConnectedOrConnecting()); p.setMobileNetworkExtraInfos(network.getExtraInfo()); p.setMobileNetworkReason(network.getReason()); } public void androidInfo() { p.setAndroidVersion(android.os.Build.VERSION.RELEASE); p.setAndroidSdk(android.os.Build.VERSION.SDK_INT); } public void sensorsInfo() { SensorManager mSensorManager= (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE); // List of Sensors Available List<Sensor> msensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); ArrayList<String> sensors = new ArrayList<String> (); for(Sensor s: msensorList) { sensors.add(s.getName()); } p.setSensors(sensors); } private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {//http://developer.android.com/reference/android/os/BatteryManager.html int health= intent.getIntExtra(BatteryManager.EXTRA_HEALTH,0); int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0); int plugged= intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,0); boolean present= intent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT); int scale= intent.getIntExtra(BatteryManager.EXTRA_SCALE,0); int status= intent.getIntExtra(BatteryManager.EXTRA_STATUS,0); String technology= intent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); int temperature= intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0); int voltage= intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,0); p.setBatteryHealth(health); p.setBatteryLevel(level); p.setBatteryPlugged(plugged); p.setBatteryPresent(present); p.setBatteryScale(scale); p.setBatteryStatus(status); p.setBatteryTechnology(technology); p.setBatteryTemperature(temperature); p.setBatteryVoltage(voltage); //waitingBattery = false; ctx.handleData(channel, p.build()); ctx.unregisterReceiver(batteryInfoReceiver); } }; }