added suport for smartwatches + wifi hack

This commit is contained in:
toni
2016-06-16 17:40:00 +02:00
parent fbff0ce962
commit 48bfd34311
7 changed files with 75 additions and 26 deletions

View File

@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "de.fhws.indoor.sensorreadout"

View File

@@ -2,9 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.fhws.indoor.sensorreadout">>
<!--
<uses-feature android:name="android.hardware.type.watch" />
-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

View File

@@ -2,6 +2,7 @@ package de.fhws.indoor.sensorreadout;
import android.Manifest;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
@@ -9,6 +10,9 @@ import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.pm.ActivityInfoCompat;
import android.support.wearable.activity.WearableActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
@@ -31,7 +35,7 @@ import de.fhws.indoor.sensorreadout.sensors.mySensor;
import de.fhws.indoor.sensorreadout.sensors.SensorType;
public class MainActivity extends Activity {
public class MainActivity extends WearableActivity {
private final ArrayList<mySensor> sensors = new ArrayList<mySensor>();
private final Logger logger = new Logger(this);
@@ -195,6 +199,7 @@ public class MainActivity extends Activity {
@Override public void onData(final SensorType id, final String csv) {return; }
});
// bluetooth permission
if(ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
@@ -204,6 +209,7 @@ public class MainActivity extends Activity {
MY_PERMISSIONS_REQUEST_READ_BT);
}
// heartbeat permission
/* if(ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.BODY_SENSORS)) {
@@ -221,7 +227,8 @@ public class MainActivity extends Activity {
loadCounterAny = 0;
logger.start();
final TextView txt = (TextView) findViewById(R.id.txtFile);
txt.setText(logger.getFile().getAbsolutePath());
String path = logger.getFile().getAbsolutePath();
txt.setText(path.substring(path.length()-17, path.length()));
for (final mySensor s : sensors) {s.onResume(this);}
}
@@ -272,6 +279,23 @@ public class MainActivity extends Activity {
/** resume activity */
protected void onResume() {
super.onResume();
//print memory info
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
Runtime info = Runtime.getRuntime();
long freeSize = info.freeMemory();
long totalSize = info.totalMemory();
long usedSize = totalSize - freeSize;
Log.d("MemoryInfo: ", String.valueOf(availableMegs));
Log.d("FreeSize: ", String.valueOf(freeSize));
Log.d("TotalSize: ", String.valueOf(totalSize));
Log.d("usedSize: ", String.valueOf(usedSize));
}
@Override

View File

@@ -7,6 +7,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Debug;
import android.util.Log;
import java.util.List;
@@ -28,21 +29,35 @@ public class WiFi extends mySensor {
this.wifi = (WifiManager) act.getSystemService(Context.WIFI_SERVICE);
isReceiverRegistered = true;
this.receiver = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
final StringBuilder sb = new StringBuilder(1024);
final List<ScanResult> res = wifi.getScanResults();
for(final ScanResult sr : res) {
sb.append(Helper.stripMAC(sr.BSSID)).append(';');
sb.append(sr.frequency).append(';');
sb.append(sr.level).append(';');
}
if (listener != null && isReceiverRegistered) {listener.onData(sb.toString());}
startScan();
//Log.d("wifi", sb.toString());
}
};
this.wifi.setWifiEnabled(false);
this.wifi.setWifiEnabled(true);
if (wifi == null) {
throw new MyException("WIFI not supported!");
}
if (wifi.isWifiEnabled()) {
this.receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final StringBuilder sb = new StringBuilder(1024);
final List<ScanResult> res = wifi.getScanResults();
for (final ScanResult sr : res) {
sb.append(Helper.stripMAC(sr.BSSID)).append(';');
sb.append(sr.frequency).append(';');
sb.append(sr.level).append(';');
}
if (listener != null && isReceiverRegistered) {
listener.onData(sb.toString());
}
startScan();
//Log.d("wifi", sb.toString());
}
};
}
else {
throw new MyException("WIFI not supported!");
}
}
@@ -52,8 +67,10 @@ public class WiFi extends mySensor {
try {
//Method startScanActiveMethod = wifi.getClass().getMethod("startScanActive");
//startScanActiveMethod.invoke(wifi);
wifi.startScan();
Log.d("wifi", "start scan");
if(!wifi.startScan()){
throw new MyException("Cant start WiFi!");
}
//Log.d("wifi", "start scan");
}catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -64,7 +81,7 @@ public class WiFi extends mySensor {
act.registerReceiver(this.receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
isReceiverRegistered = true;
wifi.createWifiLock(wifi.WIFI_MODE_SCAN_ONLY, "ipin");
wifi.disconnect();
//wifi.disconnect();
startScan();
}

View File

@@ -57,8 +57,10 @@ public class iBeacon extends mySensor {
private final void enableBT(final Activity act) {
if (bt == null) {throw new RuntimeException("BT not supported!");}
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
act.startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
if (!bt.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
act.startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
}
@Override public void onResume(final Activity act) {