0

光センサーを使用して、光のフラッシュ間の時間を測定できますか? 使用できるクラスはありますか、それとも自分でコーディングする必要がありますか? 誰かが私に何かを提供してくれますか?

public void onSensorChanged(SensorEvent event) {


    difference = System.nanoTime() - startTime;

    if (event.values[0] >= 50) {
        newdifference = System.nanoTime() - (startTime + difference);

        if (newdifference >= 2450 && newdifference < 2550) {
            dotordash = ".";

        }

        else if (newdifference > 7450 && newdifference < 7550) {
            dotordash = "-";
        }
        code += dotordash;
    }

    show.setText(" " + code);
}
4

1 に答える 1

1

あなたがすることはnanoTime()、ドットまたはハッシュを取得することに関して、基本的に完全にランダムです。あなたが興味を持っていることは2つあります:

  • 「フラッシュがオン」または「フラッシュがオフ」とカウントされるほど光が十分に明るくなった場合。これは の値にあり、SensorEventすでに で確認していevent.values[0] >= 50ます。これを 1 行のコードにまとめるには:

    boolean isFlashOn = (event.values[0] >= 50)

  • 2 つ目は、 の変更間の時間をカウントすることですisFlashOn。イベントの実際の時間は、イベントが配信されるまで時間がかかる場合があるため、それ自体からのみ取得します。SensorEventしたがって、現在のシステム時刻と比較しようとしないでください。

光センサーがノイズを発生させる可能性はまだありますが、これはフラッシュ中の暗さの尺度となります. この場合、特にフラッシュのような非常に短い持続時間のものでは、注意が必要なノイズ フィルタリングが必要になります。ノイズとノイズ フィルター処理の説明については、信号ノイズを参照してください。

于 2013-09-22T15:37:40.540 に答える