从Android手持设备Kotlin查找Wear OS节点

问题描述

我有一个使用Kotlin与Wear OS应用程序进行通信的Android应用程序构建。需要共享数据并在Wear App中启动新活动。

Docs之后,通过在Wear应用程序的values文件夹下创建一个名为wear.xml的文件来宣传此功能

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="android_wear_capabilities">
        <item>verify_mc_wear_app</item>
    </string-array>
</resources>

在移动应用中,使用它来获取功能

class McFragment:Fragment(),OnCapabilityChangedListener {
    private var mWearNodesWithApp: Set<Node>? = null
    private var mAllConnectednodes: List<Node>? = null

    override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
        super.onViewCreated(view,savedInstanceState)
        activity?.let { Wearable.getCapabilityClient(it).addListener(this,MC_TRANSCRIPTION_CAPABILITY_NAME) }
        findWearDevicesWithApp()
    }

    override fun onCapabilityChanged(capabilityInfo: CapabilityInfo) {
    mWearNodesWithApp = capabilityInfo.nodes

    findAllWearDevices()
}

private fun findWearDevicesWithApp() {
    print("findWearDevicesWithApp()")
    val capabilityInfoTask = activity?.let {
        Wearable.getCapabilityClient(it)
            .getCapability(
                CM_TRANSCRIPTION_CAPABILITY_NAME,CapabilityClient.FILTER_REACHABLE
            )
    }
    capabilityInfoTask?.addOnCompleteListener { task ->
        if (task.isSuccessful) {

            print("Capability request succeeded.")

            val capabilityInfo = task.result
            mWearNodesWithApp = capabilityInfo!!.nodes
            print("Capable Nodes: $mWearNodesWithApp")

           } else {
                print("Capability request Failed to return any results.")
           }
        }
    }

     private fun findAllWearDevices() {
           print("findAllWearDevices()")
           val nodeListTask = activity?.let { Wearable.getNodeClient(it).connectednodes }
           nodeListTask?.addOnCompleteListener { task ->
           if (task.isSuccessful) {
               print("Node request succeeded.")
               mAllConnectednodes = task.result
           } else {
               print("Node request Failed to return any results.")
           }
       }
   }

   companion object {
        private const val CM_TRANSCRIPTION_CAPABILITY_NAME = "verify_cm_wear_app"
   }
}

功能获得成功,但返回了0个节点-> mWearNodesWithApp = capabilityInfo!!.nodes

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...