小编Mar*_*ark的帖子

如何在Android上可听见地播放IPA发音?

我有一个单词的IPA发音,我想听到它回复给用户.

可以使用内置的TTS引擎完成吗?如果没有,是否有支持它的TTS引擎?

android text-to-speech ipa

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

Android Intent将在Google+社区屏幕上发布Google+应用

在Google+ Android应用中显示Google+信息页已经有了一个很好的问题:

打开谷歌加威盛意图在Android中

但对意图如何在一个特定的Google+社群推出Google+应用?

编辑 - 沉默向下选民,请解释一下你为什么下投票.

android android-intent google-plus

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

TileService 是否被视为前台进程

在 Android O 中,我们有一些新的背景限制。例如,我们只能通过该Context.registerReceiver方法注册隐式广播。当系统终止我们的进程时(例如由于内存不足),注册的接收器也将被销毁。

为了减少系统杀死我们的进程的机会,我们必须告诉系统该进程仍然在前台。根据文档,如果满足以下任一条件,则应用程序被视为位于前台:

  • 它有一个可见的活动,无论该活动是启动还是暂停。
  • 它有一个前台服务
  • 另一个前台应用程序通过绑定到其服务之一或使用其内容提供商之一来连接到该应用程序。例如,如果另一个应用程序绑定到该应用程序,则该应用程序位于前台:
    1. 壁纸服务
    2. 通知监听器
    3. 语音或文字服务

如果这些条件都不成立,则该应用程序将被视为在后台运行。

TileServiceAndroid N 中引入的(用于快速设置图块)怎么样?当我们在 mainfest 文件中注册 a TileServiceasACTIVE_TILE时,系统不会在每次磁贴变得可见时绑定服务(如本文所述,因此我们的服务在系统进程中绑定到另一个应用程序。

那么我的应用程序(只要将图块添加到快速设置窗格中)是否被视为前台应用程序?这会很好,因为我不需要使用这种方法发出持久通知,并且用户仍然可以在后台发送我的应用程序(通过删除磁贴)

android android-service android-service-binding android-8.0-oreo

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

PreferenceFragments 中 DialogPreferences 的 MaterialAlertDialogBu​​ilder

在首选项屏幕中,我想使用 MaterialComponent 的对话框(使用MaterialAlertDialogBuilder)而不是AlertDialogAppCompat 的对话框。然而,AppCompat 的首选项框架使用AlertDialog.Builder.

据我所知,覆盖它的唯一方法是覆盖:PreferenceFragmentCompat.onDisplayPreferenceDialog()并从该超类复制一堆逻辑(在显示对话框片段等方面)。

这是正确的方法还是有更好的方法?

android-preferences android-dialog android-dialogfragment material-design

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

对于多维口味,如何禁用某些组合?

我的 Android 项目有两个风味维度,但某些变体(某些维度组合)没有意义,因此我想禁用/忽略它们。

此外,对于某些变体,我不希望同时使用调试和发布构建类型(一种就足够了,因为这些变体仅供内部使用)。

如何实现这两者呢?

android android-gradle-plugin android-productflavors

4
推荐指数
1
解决办法
1222
查看次数

使用正则表达式检测字符串中的高代理项

我想检查String是否包含任何High Surrogates.在Java中,我将使用Character.isHighSurrogate(c),这是有效的.

在正则表达式中(使用Android 2.3.3 SDK提供的实现),我希望这可以工作:

[\uD800-\uDBFF]

但事实并非如此.

我使用char :( codepoint:177700)来测试这个(在我的java检查中工作,但不是正则表达式检查).

有任何想法吗?

java regex unicode android utf-8

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

在声明挂起功能时传达预期的线程类型(IO,默认,main)

在设计带有suspend函数的API时,有时我想传达这个函数应该被调用,比如IO线程.其他时候必须这样做.

通常看起来很明显; 例如,应该使用数据库调用,Dispatchers.IO但如果它是一个接口函数,则调用者不能假设这一点.

这里最好的方法是什么?

kotlin kotlinx.coroutines

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

调用 Continuation.resumeX() 失败一定是个问题吗?

suspendCoroutine用来避免在Dialogs 中使用回调。但是,在 Android 中DialogContinuation.resume()当对话框关闭时(通过在对话框区域外单击),没有明显的调用位置。如果您尝试调用,Dialog.setOnDismissListener()则必须跟踪是否已经在按钮侦听器中调用了 resume。

suspend fun displayDialog() = suspendCoroutine<String?> { continuation ->
    val builder = AlertDialog.Builder(context)
    builder.setCancelable(true)
    builder.setNegativeButton(android.R.string.cancel) { _, _ ->
        continuation.resume(null)
    }
    builder.setPositiveButton(android.R.string.ok) { _, _ ->
        continuation.resume("it's ok")
    }
    val dialog = builder.show()
    dialog.setOnDismissListener {
        // if the user clicked on OK, then resume has already been called
        // and we get an IllegalStateException
        continuation.resume(null)
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,最好跟踪是否已经调用了 resume(以避免第二次调用它),或者只是不打扰resume(null)调用(在 onDismissListener 中)?

android-dialog kotlin kotlin-coroutines

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

模糊资源字符串可能会泄露有关编程逻辑的过多信息

我目前使用LVL和Proguard的组合作为打击盗版的第一道防线.

但是,资源字符串呢?例如,如果存在类似"许可证检查失败"的资源字符串,那么盗版者是否只需要将该资源ID追溯回代码中使用的位置?事实上,如果字符串是像"请联系开发者"这样的通用字符,也是如此.

什么是最好的方法?

obfuscation android proguard android-lvl android-resources

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

如何以编程方式显示"语音识别设置"屏幕

在Android应用中,如何显示系统语音识别设置屏幕?

注意:这里有一个类似的问题,但它已经过时了.

android voice-recognition

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

每个构建变体的baseline-prof.txt位置

我的应用程序有多个风味维度,因此我想为每个变体创建baseline-prof.txt(例如fooBar)。但是,当我将文件放入其中时,/app/src/fooBar在发布版本期间不会拾取该文件。唯一一次拾取它是在放入时/app/src/main(按照文档的建议)。

baseline-prof.txt如何配置才能为每个变体存储不同的内容?

performance android android-gradle-plugin macrobenchmark baseline-profile

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