我正在尝试使用ESP8266模块控制RGB LED。但是,如果我尝试一次控制多个ESP8266模块,则for循环仅适用于最后一个数组元素。
我已经尝试过Toast.makeText(applicationContext,i.toString(),Toast.LENGTH_SHORT).show() 如果我删除if语句,循环也只计数2。
吐司本身可以在AVD上正常工作,但不能在我的Galaxy S8上正常工作。 无法在我的手机和AVD上加载所有ip。 每次我尝试控制多个设备时,只有最后一个亮起。 这是我的RGBActivity,也许我丢失了一些东西。
iv_rgb.setOnTouchListener {
_,
event - >
if (event.action == MotionEvent.ACTION_DOWN || event.action == MotionEvent.ACTION_MOVE) {
bitmap = iv_rgb.drawingCache
val pixel = bitmap.getPixel(event.x.toInt(), event.y.toInt())
var r = (Color.red(pixel) * brightness) / 100
var g = (Color.green(pixel) * brightness) / 100
var b = (Color.blue(pixel) * brightness) / 100
val hex = "#" + Integer.toHexString(pixel)
//color_layout.setBackgroundColor(Color.rgb(r, g, b))
//color_view.text = "RGB: $r, $g, $b, \nHex: $hex\n${Devices.deviceIP[0]}"
//Toast.makeText(this@RGBActivity, Devices.deviceIP[1], Toast.LENGTH_SHORT).show()
for (i in Devices.deviceIP.indices) {
if (Devices.switch[i]) {
wv_rgb.loadUrl("http://${Devices.deviceIP[i]}/?r${r.toString()}g${g.toString()}b${b.toString()}&")
Toast.makeText(applicationContext, Devices.deviceIP[i], Toast.LENGTH_SHORT).show()
//tv_color_rgb.text = "RGB: $r, $g, $b, \nHex: $hex\n${Devices.deviceIP[0]}"
//sleep(100)
}
//wvRGB.loadUrl("http://${Devices.deviceIP[i]}/?r${r.toString()}g${g.toString()}b${b.toString()}&")
//Toast.makeText(this@RGBActivity, Devices.deviceIP[i], Toast.LENGTH_SHORT).show()
//sleep(100)
}
}
true
}
答案 0 :(得分:0)
如果“ wv_rgb”是WebView而不是loadUrl,则必须等待事件onPageFinished()(或onPageLoaded()忘记名称)。
答案 1 :(得分:0)
在循环内,您可以尝试使用onPageStarted()传递视图URL和收藏夹图标,然后调用onPageFinished()(如@blackapps所述)来传递视图和URL。或尝试使用常规的for循环(不确定,但值得一试)。
您还可以查看此链接https://android--code.blogspot.com/2016/03/android-detect-when-webview-finish.html