私は、MorseとMorseを逆に変換する単純なMorseコードアプリを開発しています。ユーザが特定の文字を入力すると、デバイス上のカメラの光は、その文字のモールスシーケンスをフラッシュすることになっている。例えば:カメラのライトを特定の順序でフラッシュする方法は?
A =ドットが200msで、ダッシュが500msであるドットダッシュ。
問題は、これを達成する方法が正確にわからないことです。 forループを使ってこれを解決しようとしていますが、解決できないようです。以下は現在調整しようとしているコードです - forループを使用するのが最良の方法ですが、私は別の方法を考えることができません。誰もが提案/アイデアを持っていますか?もしそうなら、大いに感謝します。
public void flashTranslation() {
char[] cArray = message.toCharArray();
for (int i = 0; i < cArray.length; i++) {
if (cArray[i] == '.') {
turnOn();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
turnOff();
camera.release();
}
}, dot);
} else {
turnOn();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
turnOff();
camera.release();
}
}, dash);
}
}
}
public void turnOn() {
if (camera != null) {
Camera.Parameters p = camera.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
}
}
public void turnOff() {
if (camera != null) {
Camera.Parameters p = camera.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
}
}
は、あなたの答えのためにどうもありがとうございます。このことについての研究をするときに、私はスレッドを見つけましたが、私はそれらを完全に理解していませんが、どういうふうに動作するのかは分かります。私は、オンとオフの間の光の間に時間間隔を入れることは考えていませんでした。これは決して私には起こりませんでした。私はあなたが提供したコードを含んでいます。私は思ったやり方でこれを手に入れることができます。もう一度ありがとう、非常に明確かつ簡潔な答え。 –