package at.bakery.kippen.client.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.hardware.Sensor; import android.hardware.SensorManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.util.Log; import at.bakery.kippen.client.R; import at.bakery.kippen.client.sensor.BatterySensing; import at.bakery.kippen.client.sensor.MotionSensing; import at.bakery.kippen.common.data.PingData; /* * TODO implement alerts on phone screen for quick diagnosis */ public class KippenCollectingActivity extends Activity { // the WIFI to which the server is connected and the server IP // private static final String WIFI_ESSID = "UmkippenWlanderl"; //StockEINS // private static final String WIFI_PWD = "IchBinKeinLustigesPasswort"; // private static final String SERVER_IP = "192.168.10.10"; //server ip // private static final String WIFI_ESSID = "dsl"; //Matze fon // private static final String WIFI_PWD = "dsldsldsl"; // private static final String SERVER_IP = "192.168.43.152"; //server ip // // setting tomw // private static final String WIFI_ESSID = "UPC014580"; //StockEINS private // static final String WIFI_PWD = "CBZZVGQI"; //IchBinEinLustigesPasswort // private static final String SERVER_IP = "192.168.0.11"; //server ip // setting matthias // private static final String WIFI_ESSID = "UPC015668"; // private static final String WIFI_PWD = "IKSSEAAG"; // private static final String SERVER_IP = "192.168.0.26"; // server ip // setting StockEINS private static final String WIFI_ESSID = "StockEINS"; //StockEINS private static final String WIFI_PWD = "IchBinEinLustigesPasswort"; private static final String SERVER_IP = "192.168.0.100"; //server ip // // setting tomt // private static final String WIFI_ESSID = "JulesWinnfield"; // private static final String WIFI_PWD = "wuzikrabuzi"; // private static final String SERVER_IP = "192.168.1.141"; // access to sensors private SensorManager senseMan; // used for wifi based measurements and for server connection private WifiManager wifiMan; // INACTIVE private WifiSensing wifiReceiver; // used for battery based measurements private BatterySensing batteryReceiver; // used for accelerometer based measurements private Sensor accSense; // move measurements private Sensor moveSenseMagnetic; private static MotionSensing sensorListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_kippen_collecting); // the sensor manager, providing all sensor services of the device Object tmpMan = getSystemService(Context.SENSOR_SERVICE); if (tmpMan == null) { Log.e("KIPPEN", "No sensor services detected on device. It does not make sense to start, I rather quit myself."); this.finish(); } senseMan = (SensorManager) tmpMan; // wifi specific services tmpMan = getSystemService(Context.WIFI_SERVICE); if (tmpMan == null) { Log.e("KIPPEN", "No WIFI capabilities detected on device. Would not know how to talk to my master any other way. Too sad ..."); this.finish(); } wifiMan = (WifiManager) tmpMan; // connect to host network WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"" + WIFI_ESSID + "\""; if (WIFI_PWD != null) { wc.preSharedKey = "\"" + WIFI_PWD + "\""; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); } wc.status = WifiConfiguration.Status.ENABLED; // create the client socket for data transmission NetworkingTask.setup(SERVER_IP, 10001, wifiMan, wc); NetworkingTask networkTask = NetworkingTask.getInstance(); networkTask.start(); // FIXME remove or adjust, since hard-coded // the config which is send to each client, i.e. all wifi's to measure // INACTIVE Set<String> essids = new HashSet<String>(); // INACTIVE essids.add(WIFI_ESSID); // measure this wifi ... // INACTIVE essids.add("WirsingRouter5"); // ... measure that wifi ... // INACTIVE ClientConfigData config = new ClientConfigData(); // INACTIVE config.setConfig(ConfigType.MEASURE_AP_ESSID, essids); // send a simple ping to the server to notify about our presence networkTask.sendPacket(new PingData()); // the battery status measurement batteryReceiver = new BatterySensing(); // the accelerometer accSense = senseMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // move sensing via orientation and acceleration (TODO) moveSenseMagnetic = senseMan.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); // general sensor listener sensorListener = new MotionSensing(); // the wifi measuring sensor // INACTIVE wifiMan.setWifiEnabled(true); // INACTIVE wifiReceiver = new WifiSensing(wifiMan, config); Log.i("KIPPEN", "Android client activity created."); } @Override protected void onResume() { super.onResume(); senseMan.registerListener(sensorListener, accSense, 100000); senseMan.registerListener(sensorListener, moveSenseMagnetic, 100000); registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); } @Override protected void onDestroy() { super.onDestroy(); NetworkingTask.getInstance().quit(); Log.d("KIPPEN", "Closing client"); } }