我的任务是为 android mobile 创建一个应用程序来控制 Android TV,最好是任何应用程序之外的仪表板/登陆页面(包括设置)。是通过蓝牙还是 wifi 并不重要,尽管我发现蓝牙是不可能的,因为需要 HID 配置文件,并且该配置文件仅在 API 28 上可用(我需要从 API 19 开始支持)
Play 商店中有一些应用程序已经具有此功能。大多数通过 Wifi 连接到 Android TV,也与它配对。
通过分析 APK 文件,我发现了一些选项,即
有些使用 connectSDK库
其他人使用的似乎是我似乎找不到的本地 google 包
import com.google.android.tv.support.remote.Discovery;
import com.google.android.tv.support.remote.core.Client;
import com.google.android.tv.remote.BuildInfo;
Run Code Online (Sandbox Code Playgroud)我发现几年前也可以使用 Anymote 协议,但该协议仅适用于 Google TV,不适用于 Android TV。
我现在面临的问题是connectSDK库没有得到维护并且不包含任何用于 Android TV 连接的代码。本地 google 包在任何地方都找不到,不确定它是否包含在特定的 Jar 文件中,或者可能是一些模糊/隐藏的依赖项?
我可以尝试使用 Android TV 创建到特定套接字的连接,例如,我知道ServiceType
is"_androidtvremote._tcp."
并且端口号是6466
。但我不确定实现这一点的最佳方法是什么。
我正在寻找的是我如何解决这个问题的一些指示或想法。也许也有一些参考。
我有一个关于 Room 和 it\xe2\x80\x99swithTransaction { }
代码块与 Koin 结合的问题。
我有一个存储库,需要同时访问几个 DAO。我想使用 a,withTransaction { }
这样我就不会\xe2\x80\x99t 使 1 DAO 与其他 DAO 的引用变得混乱。\nI\xe2\x80\x99m 不确定要在我的存储库的构造函数中注入哪个对象。这withTransaction{ }
通过获取 RoomDatabase 来访问。但是,在我的存储库中拥有 RoomDatabase 意味着我可以访问连接到该 RoomDatabase 的所有 DAO。我\xe2\x80\x99m 不确定围绕此用例的最佳实践是什么。
我应该使用withTransaction { }
存储库中所有 DAO 都可访问的风险,还是应该将 DAO 放在存储库的构造函数中并将它们交给“ReviewDao”来处理每个插入?
一个例子是这样的withTransaction { }
class ReviewRepository(\n private val roomDatabase: RoomDatabase\n) {\n private val reviewDao = roomDatabase.reviewDao()\n private val userDao = roomDatabase.userDao()\n\n suspend fun saveReview(reviewResponse: ReviewResponse) {\n roomDatabase.withTransaction {\n reviewDao.insert(reviewResponse.getAsEntity())\n userDao.insert(reviewResponse.user.getAsEntity())\n }\n }\n}\n …
Run Code Online (Sandbox Code Playgroud)