kotlion 实现android外设输入(一)——外设连接监听

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)
}
发布了46 篇原创文章 · 获赞 6 · 访问量 9410

猜你喜欢

转载自blog.csdn.net/weixin_44259356/article/details/100522870