2016-05-07 1 views
-2

私は何度も何度も試みていますが、すべてが無駄です。加速度計の値をしばらく保存してから登録を解除する方法

私は動作中の加速度計を作成しました。私は加速度計の値をいつか保存してから登録を解除したいと思います。

私はpendingintentを使用して、再度呼び出すようにしました。

私はその値を少なくとも10秒間保存してから登録解除する方法を要求します。

フォローはJavaです。

 public class MyService extends Service implements LocationListener 
       ,SensorEventListener { 
    SensorManager sensor; 
    Sensor accelerometer; 
    // private FileWriter writer; 
     StringBuilder sr; 
     } 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 


    sensor = (SensorManager) getSystemService(SENSOR_SERVICE); 
    accelerometer = sensor.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    sensor.registerListener(
       this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL); 




      return START_STICKY; 
      } 
      @Override 
    public void onSensorChanged(SensorEvent event) { 


     synchronized (this) { 
     try { 
      float x = event.values[0]; 
      float y = event.values[1]; 
      double z = event.values[2] - 9.8; 


      sr.append("" + x).toString(); 
      Toast.makeText(getBaseContext(), sr, Toast.LENGTH_LONG).show(); 
      wait(10000); 


     } catch (Exception e) { 
      //sensor.unregisterListener(this); 
     } 

     } 
    } 

     @Override 
     public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 

私は同期されていますが、動作しません。 一度ご利用ください。 これで私の最後の年のプロジェクトが完了したらこれで解決します。

答えて

1

アンドロイドでタイマーイベントを処理する方法はたくさんありますが、HANDLERにRUNNABLEを使用することをおすすめします。

`

Handler handler = new Handler(); 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     /* Any code you put here will run after 10 seconds, So you can unregister the sensor here */ 
     handler.postDelayed(runnable, 10000);// 10000 milliseconds = 10 seconds. 
    } 
}; 

`

+0

と私は( – wiki

+0

公共の実行を入れたい場合はrun()メソッドの内部で、それは一例values.forオットとcampreれる値で値をcampre場合){event.values [0]; event.values [1]}などは、このキャンプの10秒後に表示されます。 – wiki

+0

繰り返し操作をしたいのですか、わずか10秒間または指定した時間だけプロセスを実行しますか? –

関連する問題