1.硬件扫描二维码登录
参考Android 无 EditText 情况下接受扫码枪扫描数据
需求:硬件设备有二维码读取器,我们展示二维码,可以根据二维码信息,进行下一步操作
因为现有扫码设备,在扫码后就会在输入框(EditText)显示正确的扫码信息
选择方案:不使用EditText
class MainActivity : AppCompatActivity() {
var barcode = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
if (event?.action == KeyEvent.ACTION_DOWN) {
val pressedKey = event.unicodeChar.toChar()
//会输出单个的字符
barcode += pressedKey
}
if (event?.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER) {
Toast.makeText(this, "barcode=$barcode", Toast.LENGTH_LONG).show()
//TODO 全部输入完成 进行后续操作
barcode =""
}
return super.dispatchKeyEvent(event)
}
}
注意:
1.在使用时需要使用.trim()去空,以免遇到问题
2.扫码会触发点击事件,需注意
2.实现连续点击
参考文章
https://www.cnblogs.com/tangZH/p/9832171.html
object MultipleClickUtils {
private const val counts = 4
private const val duration = 3 * 1000L
private val mHits = LongArray(counts)
fun checkMultipleClick(onFinish: () -> Unit) {
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
mHits[mHits.size - 1] = SystemClock.uptimeMillis()
if (mHits[0] >= SystemClock.uptimeMillis() - duration) {
//完成连续counts点击
onFinish()
}
}
}
arraycopy的方法理解
arraycopy










网友评论