devin1014 / DLNA-Cast

基于Cling库封装的DLNA投屏库,支持DMC、DMS、DMR功能。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

简单的一个类,搜索不出设备,偶尔进页面崩溃,demo中的mainactivity 如果OnDeviceRegistryListener不在adapter中,直接写在activity也搜不出设备

qq570026938 opened this issue · comments

/**

  • 投屏
    /
    class TpActivity : BaseActivity(R.layout.cling_dialog),
    OnDeviceRegistryListener {
    private val clingDeviceAdapter by lazy { ClingDeviceAdapter() }
    private val deviceList = mutableListOf<Device<
    , *, *>>()

    companion object {
    private const val TAG = "ClingListDialog"
    fun startTpActivity(context: Context, title: String, url: String, img: String, id: String) {
    val intent = Intent(context, TpActivity::class.java)
    intent.putExtra("title", title)
    intent.putExtra("url", url)
    intent.putExtra("img", img)
    intent.putExtra("id", id)
    context.startActivity(intent)
    }
    }

    private var title: String = ""
    private var url: String = ""
    private var img: String = ""
    private var id: String = ""

    override fun initView(savedInstanceState: Bundle?) {
    title = intent?.getStringExtra("title") ?: title
    url = intent?.getStringExtra("url") ?: url
    img = intent?.getStringExtra("img") ?: img
    id = intent?.getStringExtra("id") ?: id
    DLNACastManager.getInstance().registerDeviceListener(this)
    mBinding.apply {
    wifi = "当前wifi:<${Utils.getWiFiInfoSSID(this@TpActivity)}>"
    ivClose.setOnClickListener { finish() }
    clingRecycler.addLinearManager()
    clingDeviceAdapter.setList(deviceList)
    clingDeviceAdapter.setOnItemClickListener { _, _, position ->
    clingDeviceAdapter.setSelectedDevice(clingDeviceAdapter.getItem(position))

// startActivity(Intent(requireContext(), TpActivity::class.java))
}
clingRecycler.adapter = clingDeviceAdapter
}

}

override fun initData() {

}

override fun onStart() {
    super.onStart()
    DLNACastManager.getInstance().bindCastService(this)
}

override fun onStop() {
    DLNACastManager.getInstance().unbindCastService(this)
    super.onStop()
}

override fun onDestroy() {
    DLNACastManager.getInstance().unregisterListener(this)
    super.onDestroy()
}

override fun onDeviceAdded(device: Device<*, *, *>?) {
    device?.also {
        if (!deviceList.contains(it)) {
            deviceList.add(it)
        }
    }
}

override fun onDeviceUpdated(device: Device<*, *, *>?) {
}

override fun onDeviceRemoved(device: Device<*, *, *>?) {
    if (deviceList.contains(device)) {
        deviceList.remove(device)
    }
}

}

已整体重构