I want to save the time as "dateString" when the gyro reading x = 0.0, y = 0.0, z = 0.0 and when x> 0.0 && & y> 0.0 && z> 0.0 save the time as "dateString1". I can’t time if the condition is met, because it takes the current time of my phone. It constantly works, so it is not possible to get the time when an event occurs, what is the solution for the same?

Example. If my phone is at rest, the gyro sensor will provide x = 0.0, y = 0.0, z = 0.0 if reading remains the same for three hours. Suppose this is the time that sleep begins. when the reading suddenly changes in terms of x, y, z, it will be the time of awakening.
( )?
x, y, z, 0,0,0,0,0,0 .
pic up x, y, z . , .
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main extends Activity {
Dbhelper myDb;
TextView textX, textY, textZ;
Button ButtonView,ButtonAdd;
TextView text1,text2,text3,text4 ;
SensorManager sensorManager;
Sensor sensor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myDb =new Dbhelper(this);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
textX = (TextView) findViewById(R.id.textX);
textY = (TextView) findViewById(R.id.textY);
textZ = (TextView) findViewById(R.id.textZ);
text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);
text3 = (TextView) findViewById(R.id.text3);
text4 = (TextView) findViewById(R.id.text4);
ButtonView=(Button)findViewById(R.id.button_view);
ButtonAdd=(Button)findViewById(R.id.button_add);
AddData();
viewAll();
}
public void AddData() {
ButtonAdd.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertData(text1.getText().toString(), textX.getText().toString(),
textY.getText().toString(),
textZ.getText().toString());
if (isInserted == true)
Toast.makeText(Main.this, "Data Inserted", Toast.LENGTH_LONG).show();
else
Toast.makeText(Main.this, "Data not Inserted", Toast.LENGTH_LONG).show();
}
}
);
}
public void viewAll() {
ButtonView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = myDb.getAllData();
if(res.getCount() == 0) {
showMessage("Error","Nothing found");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("ID :"+ res.getString(0)+"\n");
buffer.append("TIME :"+res.getString(1)+"\n");
buffer.append("X :"+ res.getString(2)+"\n");
buffer.append("Y :"+ res.getString(3)+"\n");
buffer.append("Z :"+ res.getString(4)+"\n\n");
}
showMessage("Data",buffer.toString());
}
}
);
}
public void showMessage(String title,String Message){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(Message);
builder.show();
}
public void onResume() {
super.onResume();
sensorManager.registerListener(gyroListener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
}
public void onStop() {
super.onStop();
sensorManager.unregisterListener(gyroListener);
}
public SensorEventListener gyroListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int acc) { }
public void onSensorChanged(SensorEvent event) {
long timeStamp = event.timestamp;
double x = event.values[0];
x=(double)Math.round(x * 10d) / 10d;
double y = event.values[1];
y=(double)Math.round(y * 10d) / 10d;
double z = event.values[2];
z=(double)Math.round(z * 10d) / 10d;
textX.setText("X : " + x );
textY.setText("Y : " + y );
textZ.setText("Z : " + z );
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
String dateString1 =sdf1.format(c2.getTime());
int timeOfDay = c2.get(Calendar.HOUR_OF_DAY);
c2.getTime();
Calendar c1 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String dateString =sdf.format(c1.getTime());
int timeOfDay1 = c1.get(Calendar.HOUR_OF_DAY);
c1.getTime();
if(timeOfDay >= 11 && timeOfDay <= 20 && x==0 && y==0 && z==0)
text1.setText("phone is not moving" + dateString);
else if
(timeOfDay1 >= 11 && timeOfDay1 <= 20 && x>0 || y>0 || z>0)
text2.setText("phone is just moved " + dateString1);
else if(timeOfDay >= 11 && timeOfDay <= 20 )
text3.setText("Were phone asleep between "+ dateString + "&" + dateString1);
}
};
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<TextView
android:id="@+id/textX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="" />
<TextView
android:id="@+id/textY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:textSize="30sp"
android:text="" />
<TextView
android:id="@+id/textZ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:textSize="30sp"
android:text="" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:textSize="30sp"
android:text="" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:textSize="30sp"
android:text="" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:textSize="30sp"
android:text="" />
</LinearLayout>
. , , Timestamp - , .