kotlion 实现android外设输入(一)——外设连接监听
系列文章目录:
怎么从头开始构建一个基于web浏览器的云游戏平台–前言——带目录
https://blog.csdn.net/weixin_44259356/article/details/100151865
参考大佬用java实现如下:https://blog.csdn.net/ly0303521/article/details/70212806
本文原文:https://blog.csdn.net/weixin_44259356/article/details/100522870
具体步骤实现如下:
1实现抽象类BroadcastReceiver
这里用的动态注册,所以要实现抽象类,静态实现可以百度,和语言无关
class BroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
println("接收到的消息为:" + intent.getStringExtra("data")!!)
}
companion object {
val ACTION = "com.codingblock.receive.intent.action.MyReceiver"
}
}
2在onCreate实现外设监听
//usb线的广播
val TAGUSB:String = "android.hardware.usb.action.USB_STATE"
//外设的广播
val TAGIN:String = "android.hardware.usb.action.USB_DEVICE_ATTACHED"
val TAGOUT:String = "android.hardware.usb.action.USB_DEVICE_DETACHED"
var BOOLEAN:Boolean=false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val filter = IntentFilter()
//筛选的条件
filter.addAction(TAGIN)
filter.addAction(TAGOUT)
filter.addAction(TAGUSB)
//注册广播 动态注册
registerReceiver(receiver,filter)
}
var receiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val action = intent.action
//判断外设
if (action == TAGIN) {
toast("外设已经连接")
//Toast.makeText(context, "外设已经连接", Toast.LENGTH_SHORT).show();
}
if (action == TAGOUT) {
if (BOOLEAN) {
toast("外设已经移除")
//Toast.makeText(context, "外设已经移除", Toast.LENGTH_SHORT).show();
}
}
//判断存储usb
if (action == TAGUSB) {
val connected = intent.extras!!.getBoolean("connected")
if (connected) {
toast("USB 已经连接")
//Toast.makeText(MainActivity.this, "USB 已经连接",Toast.LENGTH_SHORT).show();
} else {
if (BOOLEAN) {
toast("USB 断开")
//Toast.makeText(MainActivity.this, "USB 断开",Toast.LENGTH_SHORT).show();
}
}
}
BOOLEAN = true
}
}
/**
* 注销广播
*/
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(receiver)
}