小编Pau*_*aul的帖子

有人用 Jetpack Compose 成功实现了 Googlecast sdk 吗?你采取了什么方法?

我目前正在尝试将 Google Cast sdk 添加到纯 Compose 应用程序中。

我用各种方法遇到了几个问题。我想知道是否有其他人实现了这一目标,如果是的话,他们采取了什么方法?

我尝试在活动级别添加强制转换实现,并使用流和回调与可组合项进行通信。通过此实现,我坚持能够将迷你控制器添加到活动(单个活动应用程序),因为它是一个撰写活动。

我尝试使用 AndroidViewBinding 可组合项以推荐的组合方式添加迷你控制器片段,但使用推荐的方法它不会膨胀。

我什至尝试覆盖 AndroidViewBinding 可组合项并手动膨胀,这在一定程度上有效,但随后我遇到了内存泄漏问题。

我知道这是一个非常广泛的问题,所以我只是在寻找一些总体方向,如果有人成功地做到了这一点,我很高兴详细说明我迄今为止所尝试的内容。

android google-cast google-cast-sdk android-jetpack-compose

9
推荐指数
0
解决办法
474
查看次数

如何使用 setRequiredNetworkType(NetworkType.CONNECTED) 约束测试 Android WorkManager?

我正在尝试为包含 WorkManager WorkRequests 的类编写 Android 检测测试。

很长一段时间,我都被困在我可以看到工人排队但他们从未被处决的地步。经过一段时间的反复试验,我意识到以下约束阻止了测试:

...
 setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
...
Run Code Online (Sandbox Code Playgroud)

如果我删除该约束,工作项将按预期执行。

我的虚拟设备有网络连接,所以不确定为什么我的测试没有满足这个限制。

有没有人对如何解决这个问题有任何建议,因为我需要编写测试来涵盖满足和不满足此约束的情况。

我的工作要求非常简单,但它是:

val workRequest = OneTimeWorkRequestBuilder<T>()
                .addTag(syncWork.getSyncType().name)
                .setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
                .build()

syncWorkRepository.save(syncWork.apply { id = workRequest.id.toString() })

workManager.enqueue(workRequest)
Run Code Online (Sandbox Code Playgroud)

我试过了:

val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
    wifi.isWifiEnabled = true
Run Code Online (Sandbox Code Playgroud)

但这会引发安全异常:

SecurityException: WifiService: Neither user 10139 nor current process has android.permission.CHANGE_WIFI_STATE.
Run Code Online (Sandbox Code Playgroud)

我还在测试中添加了代码来检查网络状态:

val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
    val isConnected: Boolean = activeNetwork?.isConnected == true
Run Code Online (Sandbox Code Playgroud)

并且 isConnected 为真但仍然不满足 WorkManager 约束,因此不执行工作。

还试过:

val testDriver = getTestDriver()
Run Code Online (Sandbox Code Playgroud)

testDriver?.setAllConstraintsMet(workInfo.id) …
Run Code Online (Sandbox Code Playgroud)

android android-testing android-instrumentation android-workmanager

6
推荐指数
1
解决办法
1282
查看次数

我可以像在Github上那样以某种方式为发布请求请求提交启用BitBucket请求请求描述的自动更新吗?

我可以像在Github上那样以某种方式为发布请求请求提交启用BitBucket请求请求描述的自动更新吗?

场景:

  1. 我完成了一些工作,最后一次提交。

  2. 我使用BitBucket Web创建一个拉取请求。

  3. 我意识到我需要再次提交。

  4. 该提交的代码已按预期添加到请求请求中。

  5. 提交消息不会添加到拉取请求描述中,因此审阅者没有上下文或所添加代码的可见性。他们甚至可能已经进行了部分审查,并可能错过了这些新更改。

有没有办法像GitHub一样将提交消息自动添加到拉取请求描述中?

谢谢,
保罗。

git bitbucket

5
推荐指数
1
解决办法
205
查看次数

使用领域和LiveData。将LiveData &lt;RealmResults &lt;CustomModelObject &gt;&gt;转换为LiveData &lt;List &lt;CustomModelObject &gt;&gt;

我正在尝试将Realm与包括LiveData在内的Android体系结构组件一起使用。

我一直在关注Google的《应用程序体系结构指南》:

https://developer.android.com/topic/libraries/architecture/guide.html

用空间代替房间。

我正在使用的一切:

LiveData<RealmResults<CustomModelObject>>
Run Code Online (Sandbox Code Playgroud)

从我的存储库层,一直到ViewModel到View。

我想这可能是更好的只有有更多的泛型类型来从仓库回来,LiveData<List<CustomModelObject>>而不是LiveData<RealmResults<CustomModelObject>>

这是我遇到问题的代码段:

@NonNull
@Override
protected LiveData<List<CustomModelObject>> loadFromDb() {
    return Transformations.switchMap(customModelObjectsDao.getCustomModelObjects(),
        new Function<RealmResults<CustomModelObject>, LiveData<List<CustomModelObject>>>() {
        @Override
        public LiveData<List<CustomModelObject>> apply(RealmResults<CustomModelObject> data) {
            if (data == null) {
                return AbsentLiveData.create();
            } else {
                return customModelObjectsDao.getCustomModelObjects();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

customModelObjectsDao.getCustomModelObjects()目前返回LiveData<RealmResults<Inspiration>>

我想将其转换为LiveData<List<Inspiration>>

我尝试过各种方法Transformations.map,但都Transformations.switchMap没有成功,我想我已经盯着它太久了:)

我在正确的道路上还是缺少明显的东西?

任何帮助是极大的赞赏。

谢谢,保罗。

更新

道:

public RealmLiveData<CustomModelObject> getCustomModelObjects() {
    return asLiveData(realm.where(CustomModelObject.class).findAllAsync());
}
Run Code Online (Sandbox Code Playgroud)

asLiveData Impl:

fun <T: RealmModel> RealmResults<T>.asLiveData() = RealmLiveData<T>(this)
fun …
Run Code Online (Sandbox Code Playgroud)

android realm android-livedata

3
推荐指数
1
解决办法
1581
查看次数

我可以在 Android 库模块中使用 Firebase 远程配置,并且仍然允许库使用者使用它吗?

是否可以在 Android 库模块中使用 Firebase 远程配置,并且仍然允许库使用者通过自己的帐户使用 Firebase 远程配置?

我创建了一个 Android 库,它使用 Firebase 远程配置从我的 Firebase 控制台帐户更新库配置。

在我引用库的参考/测试应用程序中,我的 google-services.json 位于应用程序目录中。一切正常。

我刚刚意识到,一旦我将我的库作为 aar 提供给其他人,他们可能会拥有自己的 google-services.json 并直接在他们自己的应用程序中使用 Firebase。

我已经搜索过谷歌,但我发现很难找出这是否可能?有没有人有过这种设置的经验或知道它应该如何工作?我唯一能想到的就是将我的 google-services.json 移动到库中,但我无法让它工作。

在此先感谢您的帮助!

android firebase firebase-remote-config

2
推荐指数
1
解决办法
606
查看次数

单个Activity应用中的启动画面方法

我正在尝试确定创建应用程序启动屏幕的最佳方法,同时考虑到Google在可能的情况下选择单个Activity应用程序的最新建议。

看这里:

“新方法是尽可能使用单一活动结构。”

和这里:

“今天,我们将导航组件作为构建应用内UI的框架引入,重点是使单活动应用成为首选架构。”

我发现的任何好的启动画面方法都有一个专门的启动画面活动:

看这里

和这里

其他人是否有在单个Activity应用程序中创建启动屏幕的经验?单个“活动”建议是否包含启动屏幕,或者是特殊情况?有人对此有任何好的例子或建议吗?

干杯,保罗。

architecture android splash-screen android-activity kotlin

2
推荐指数
1
解决办法
1017
查看次数