Итак, я пытаюсь запустить мой sensor reading method
через 10 секунд и остановить его, скажем, 5 минут. Это код для того же самого.Автоматический запуск и остановка
case R.id.btn_pos_poll_side: {
final Handler handler = new Handler();
//Delay Runner Here
handler.postDelayed(new Runnable() {
@Override
public void run() {
side_output.setText("Delayed Data Collection");
//Start reading LIGHT SENSOR Data, Handle Null Light Sensor Data
if (LightSensor != null || mProximity != null || mAccelerometer != null || mGyroscope != null) {
//listen to light sensor.
mySensorManager.registerListener(
MultiSensorListener,
LightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
//listen to proximity sensor.
mySensorManager.registerListener(
MultiSensorListener,
mProximity,
SensorManager.SENSOR_DELAY_NORMAL);
//listen accelerometer, note this has 3-axes.
mySensorManager.registerListener(
MultiSensorListener,
mAccelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
//listen gyroscope, note this has 3-axes.
mySensorManager.registerListener(
MultiSensorListener,
mGyroscope,
SensorManager.SENSOR_DELAY_NORMAL);
//print output text
side_output.setText(Html.fromHtml("<h3> ----- Data Collection Session Starts Here -----</h3>"));
} else {
side_output.setText("No Sensor Found!");
}
}
}, 10000);
final Handler closeHandler = new Handler();
//Data Sender Runner Here
closeHandler.postDelayed(new Runnable() {
@Override
public void run() {
Button stopCollection = (Button) findViewById(R.id.btn_stop_poll_side);
stopCollection.performClick();
}
}, 120000);
break;
}
Однако это никогда не работает и даже данные, собранные несколько коррумпированы (новые данные объединяются в предыдущие данные).
Что я делаю неправильно?
Спасибо.
Редактировать: Еще несколько деталей. Я хочу запустить его через 10 секунд после того, как я нажал кнопку и остановил ее, скажем, 2 минуты. Это происходит только один раз, если я снова не нажму кнопку.
Добавлено: Стоп Logic
case R.id.btn_stop_poll_side: {
// remove sensor listener
mySensorManager.unregisterListener(MultiSensorListener,
LightSensor);
mySensorManager.unregisterListener(MultiSensorListener,
mProximity);
mySensorManager.unregisterListener(MultiSensorListener,
mAccelerometer);
mySensorManager.unregisterListener(MultiSensorListener,
mGyroscope);
side_output.append("\n" + sensorReading);
/*
Reading data and writing to Dropbox!
*/
new DropboxTask(side_output, "Back Pocket Data Reading", sensorReading).execute();
break;
}
Вы хотите, чтобы начало и прекращение происходило в течение жизни или для ограниченного нет. раз? –
@DarshanMiskin Я хочу запустить его через 10 секунд после того, как я нажал кнопку и остановил ее, скажем, 2 минуты. Это происходит только один раз, если я снова не нажму кнопку. –
Ваши обработчики кажутся логически правильными, за исключением того, что метод остановки будет вызываться всего за 10 секунд до 2 минут. в чем именно проблема, с которой вы столкнулись? –