【发布时间】:2016-10-12 20:00:53
【问题描述】:
我做了一个手电筒应用程序,现在我想添加 sos 莫尔斯电码闪烁。这是我的代码,但效果不太好,闪烁太快,所以我需要一些延迟,有人可以帮忙吗?
public void sos(View v) {
String myString = "111000111";
Handler handler = new Handler();
for (int x = 0; x < myString.length(); x++) {
if (myString.charAt(x) == '1') {
handler.postDelayed(new Runnable() {
public void run() {
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
}
}, 300);
handler.postDelayed(new Runnable() {
public void run() {
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
}
}, 300);
handler.postDelayed(new Runnable() {
public void run() {
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
}
}, 300);
}
}
}
【问题讨论】:
-
如果我了解问题所在,那么每个 Handler 都会在 300 毫秒后运行。每一个之间没有 300 毫秒的延迟。如果你想这样做,那么你需要在另一个线程的末尾启动另一个线程
-
你能帮我做吗?我刚开始学习这个,所以我真的不能这样做
-
您也可以使用
Thread.sleep(),但这会停止应用程序的主线程 -
我不知道该怎么做:/请帮我做
-
为什么要使用 handler.postDelayed?我会尝试一些更简单的东西,比如 Thread.sleep()
标签: java android sos flashlight