package com.integreight.onesheeld.shields.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.MagnetometerShield;
import com.integreight.onesheeld.shields.controller.MagnetometerShield.MagnetometerEventHandler;
public class MagnetometerFragment extends
ShieldFragmentParent<MagnetometerFragment> {
TextView x, y, z, mf;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
setHasOptionsMenu(true);
return inflater.inflate(R.layout.magnetometer_shield_fragment_layout,
container, false);
}
@Override
public void doOnStart() {
((MagnetometerShield) getApplication().getRunningShields().get(
getControllerTag()))
.setMagnetometerEventHandler(magnetometerEventHandler);
((MagnetometerShield) getApplication().getRunningShields().get(
getControllerTag())).registerSensorListener(true);
}
@Override
public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) {
x = (TextView) v.findViewById(R.id.x_value_txt);
y = (TextView) v.findViewById(R.id.y_value_txt);
z = (TextView) v.findViewById(R.id.z_value_txt);
mf = (TextView) v.findViewById(R.id.mfValue);
}
private MagnetometerEventHandler magnetometerEventHandler = new MagnetometerEventHandler() {
@Override
public void onSensorValueChangedFloat(final float[] value) {
// TODO Auto-generated method stub
// set data to UI
x.post(new Runnable() {
@Override
public void run() {
if (canChangeUI())
x.setText("" + value[0]);
}
});
y.post(new Runnable() {
@Override
public void run() {
if (canChangeUI())
y.setText("" + value[1]);
}
});
z.post(new Runnable() {
@Override
public void run() {
if (canChangeUI())
z.setText("" + value[2]);
}
});
mf.post(new Runnable() {
@Override
public void run() {
if (canChangeUI()) {
float magnetic_field = (float) Math
.sqrt((value[0] * value[0])
+ (value[1] * value[1])
+ (value[2] * value[2]));
mf.setText(activity.getString(R.string.magnetometer_magnetic_field_is)+" "
+ String.valueOf(magnetic_field).substring(
0,
String.valueOf(magnetic_field).indexOf(
'.')) + " (uT)");
}
}
});
}
@Override
public void isDeviceHasSensor(final Boolean hasSensor) {
}
};
private void initializeFirmata() {
if (getApplication().getRunningShields().get(getControllerTag()) == null) {
getApplication().getRunningShields().put(getControllerTag(),
new MagnetometerShield(activity, getControllerTag()));
}
}
public void doOnServiceConnected() {
initializeFirmata();
}
}