0

アプリでパルス LED アクションをトリガーするボタンを作成しましたが、永久にパルスにすることはできません。常に値でパルスします (上記の例では、10 回パルスしてから停止します)。

//Button Pulse
Button bpulse = (Button) findViewById(R.id.bpulse);
bpulse.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
    // TODO Auto-generated method stub                  
    Intent led = new Intent(IlluminationIntent.ACTION_START_LED_PULSE);

    led.putExtra(IlluminationIntent.EXTRA_PACKAGE_NAME, "com.devsgonemad.xslc");

    led.putExtra(IlluminationIntent.EXTRA_LED_ID,
                     IlluminationIntent.VALUE_BUTTON_2);

    led.putExtra(IlluminationIntent.EXTRA_LED_NO_OF_PULSES, 10);

    led.putExtra(IlluminationIntent.EXTRA_LED_PULSE_ON_TIME, 1000);

    led.putExtra(IlluminationIntent.EXTRA_LED_PULSE_OFF_TIME, 1000);

    led.putExtra(IlluminationIntent.EXTRA_LED_COLOR, m_ledColor);

    startService(led);

    m_isEnabled = true;
}

ユーザーがアプリに戻ってパルスを停止するまで、ボタンが押されたときにこのパルスを永久に作成するにはどうすればよいですか?

よろしくお願いします

4

1 に答える 1

1

while ループを使用するのはどうですか。パルス数を 1 に設定し、これを while ループで継続的に実行させ、何らかの条件 (この場合はボタンが押される) が満たされるまで続けることができます。

while(buttonNotPressed){
  led.putExtra(IlluminationIntent.EXTRA_LED_NO_OF_PULSES, 1);
  startService(led);
}

もちろん、これには明らかな落とし穴があります。多くの並列サービスを開始して、すべてが一度 LED を点滅させようとする可能性があります。ただし、while ループを制御して、次の反復を開始する前にサービスが終了するのを待つことができると思います。
編集: while ループがサービスを待機するには、while ループが待機できるサービス内に何らかのフラグを追加する必要があります。サービスが終了すると、フラグを設定して while ループを次の反復に移すことができるため、ボタンが押されるまで無限にフラッシュを繰り返すことができます。

于 2012-05-07T14:58:14.640 に答える