package com.movisens.gattsensorexample.activities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.movisens.gattsensorexample.R;
import com.movisens.gattsensorexample.application.App;
import com.movisens.gattsensorexample.events.MeasurementStatus;
import com.movisens.gattsensorexample.events.MeasurementStatus.SensorState;
import com.movisens.gattsensorexample.model.CurrentSensorData;
import com.movisens.gattsensorexample.services.SamplingService;
import com.movisens.smartgattlib.characteristics.BatteryLevel;
import de.greenrobot.event.EventBus;
public class StartActivity extends Activity {
SamplingService mService;
boolean mBound = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
this.setContentView(R.layout.start_activity);
Button startSampling = (Button) this.findViewById(R.id.startSampling);
startSampling.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
SamplingService.start(App.app());
updateButtons();
}
});
Button stopSampling = (Button) this.findViewById(R.id.stopSampling);
stopSampling.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
SamplingService.stop(App.app(), false);
updateButtons();
}
});
}
@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
updateButtons();
updateSensorData(App.app().getCurrentSensorData());
updateBatteryLevel(App.app().getCurrentBatteryLevel());
}
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
finish();
}
public void onEventMainThread(CurrentSensorData sensorData) {
updateSensorData(sensorData);
}
private void updateSensorData(CurrentSensorData sensorData) {
TextView movementAcceleration = ((TextView) this
.findViewById(R.id.movementAcceleration));
TextView metLevel = ((TextView) this
.findViewById(R.id.metLevel));
TextView stepCount = ((TextView) this
.findViewById(R.id.stepCount));
if (sensorData != null) {
movementAcceleration.setText(getString(
R.string.movement_acceleration_desc,
sensorData.movementAcceleration));
if (sensorData.metLevel != null) {
metLevel.setText(getString(
R.string.metLevel_desc,
sensorData.metLevel.getSedetaryValue(),
sensorData.metLevel.getLightValue(),
sensorData.metLevel.getModerateValue(),
sensorData.metLevel.getVigorousValue()
));
}else {
metLevel.setText(getString(R.string.waiting));
}
if (sensorData.stepCount != null) {
stepCount.setText(getString(
R.string.stepCount_desc,
sensorData.stepCount.getValue()));
}else {
stepCount.setText(getString(R.string.waiting));
}
} else {
movementAcceleration.setText(getString(R.string.waiting));
stepCount.setText(getString(R.string.waiting));
metLevel.setText(getString(R.string.waiting));
}
}
public void onEventMainThread(BatteryLevel batteryLevel) {
updateBatteryLevel(batteryLevel);
}
public void onEventMainThread(MeasurementStatus measurementStatus) {
if (measurementStatus.measurementEnabled == SensorState.False
&& measurementStatus.dataAvailable == SensorState.True) {
SamplingService.stop(this, false);
Toast.makeText(
this,
"Measurement can't be started, because there is already a measurement on the sensor",
Toast.LENGTH_LONG).show();
}
updateButtons();
}
private void updateBatteryLevel(BatteryLevel batteryLevel) {
TextView batteryLevelText = (TextView) this
.findViewById(R.id.batteryLevel);
if (batteryLevel == null) {
batteryLevelText
.setText(getString(R.string.battery_level_desc, "?"));
} else {
batteryLevelText.setText(getString(R.string.battery_level_desc,
batteryLevel.getBatteryLevel()));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem actionItem = menu.add("Preferences");
actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
actionItem.setIcon(android.R.drawable.ic_menu_preferences);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent launchPreferencesIntent = new Intent().setClass(this,
Preferences.class);
startActivity(launchPreferencesIntent);
return true;
}
private void updateButtons() {
Button startSampling = (Button) this.findViewById(R.id.startSampling);
Button stopSampling = (Button) this.findViewById(R.id.stopSampling);
TextView sensorName = (TextView) this.findViewById(R.id.sensor_name);
if (App.app().isSamplingRunning()) {
startSampling.setVisibility(View.GONE);
stopSampling.setVisibility(View.VISIBLE);
} else {
startSampling.setVisibility(View.VISIBLE);
stopSampling.setVisibility(View.GONE);
}
if (App.app().isSensorSelected()) {
startSampling.setEnabled(true);
stopSampling.setEnabled(true);
} else {
startSampling.setEnabled(false);
stopSampling.setEnabled(false);
}
sensorName.setText(App.app().getSensor());
}
}