关键点:重写activity中的dispatchKeyEvent方法
Kotlin版:
import android.os.Handler import android.os.Message import android.support.v4.app.FragmentActivity import android.view.KeyEvent import android.widget.Toast class MainActivity : FragmentActivity() { private var barcode: String = "" private var mHandler: Handler = object : Handler() { override fun handleMessage(msg: Message) { //处理业务逻辑 Toast.makeText(applicationContext, "barcode--->>".plus(msg.obj), Toast.LENGTH_LONG).show() } } 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) { val msg = Message.obtain() msg.what = 1 msg.obj = barcode.trim() mHandler.sendMessage(msg) barcode = "" } return super.dispatchKeyEvent(event) } }