小编Mar*_*ark的帖子

连续调用TextToSpeech.OnInitListener.onInit(int)

我得到的报道称,在一些(并非所有)HTC Desire HD(FRF91,2.2)和HTC EVO 4G(PC36100 | 3.29.651.5,2.2)上,TextToSpeech.OnInitListener.onInit(int)被重复调用(在少数几个空间内超过1500次)秒)在同一个对象上.任何我的其他用户(或与其他Desire HD用户)AFAICT不会发生此问题.

代码是:

TextToSpeech tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
    private int mCallCount = 0; // trying to investigate potential infinite loops

    @Override
    public void onInit(int status) {
        if ((mCallCount % 100) == 1) {
            // report this
        }
        mCallCount++;
    }
});
Run Code Online (Sandbox Code Playgroud)

任何想法?

编辑:我也试过调用该shutdown()方法(第一次检测到多个侦听器调用)但这似乎没有帮助.

android text-to-speech

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

如何调试Android应用程序中UnixDirectoryStream引起的泄漏

启用 StrictMode 后我注意到了这一点:

2021-05-08 11:09:42.854 14347-14773/com.myapp D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. Callsite: close
        at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1929)
        at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:305)
        at sun.nio.fs.UnixDirectoryStream.finalize(UnixDirectoryStream.java:240)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278)
        at java.lang.Daemons$Daemon.run(Daemons.java:139)
        at java.lang.Thread.run(Thread.java:923)
2021-05-08 11:09:42.855 14347-14773/com.myapp D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. Callsite: close
        at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1929)
        at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:305)
        at …
Run Code Online (Sandbox Code Playgroud)

android android-strictmode

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

如何从横向到横向检测屏幕旋转180度?

我已经看到了一些与此类似但没有答案的其他问题.

从纵向旋转到横向(任一方向)再返回,我们得到对onConfigurationChanged()的有用调用.

但是,当从景观旋转到横向(通过180度)时,onConfigurationChanged()不会被调用.

我已经看到过使用OrientationEventListener,但这对我来说似乎很有趣,因为你可以快速旋转而不会触发显示方向的改变.

我已经尝试添加布局更改侦听器,但没有成功.

那么问题是,如何可靠地检测横向方向的这种变化?

android

20
推荐指数
2
解决办法
7496
查看次数

如何处理SYSTEM_ALERT_WINDOW权限未在某些Marshmallow设备上自动授予

我一直在收到一些小米设备(例如Mi 2,运行API级别21)没有显示叠加层的报告.我的应用针对API 23.

几个 帖子在那里对此.似乎MIUI设备在安装时不启用此权限(与其他Marshmallow之前的设备不同).

不幸的是,Settings.canDrawOverlays()仅适用于Android 23+.

  1. 在Marshmallow之前检查此权限是否尚未启用的正确方法是什么?
  2. 是否有意图将用户带到相关的MUIU设置页面?也许吧:new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION", packageName)但我没办法测试这个.

android android-overlay

16
推荐指数
3
解决办法
2万
查看次数

如何解决D8警告:D8:找不到类型`org.conscrypt.Conscrypt`

/Volumes/SSD/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.10.0/7ef0f1d95bf4c0b3ba30bbae25e0e562b05cf75e/okhttp-3.10.0.jar: D8: Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.Platform okhttp3.internal.platform.ConscryptPlatform.buildIfSupported()`
Run Code Online (Sandbox Code Playgroud)

okhttp3

16
推荐指数
2
解决办法
8126
查看次数

Android 导航组件 - 在包含的模块图之间导航

我有一个带有 3 个模块的活动应用程序 - app, list& detail。我的活动在app模块中,它托管唯一的NavHostFragment. 所有模块都有自己的导航图。detail的起点需要一个长参数。app的图是其他图的父图:

<?xml version="1.0" encoding="utf-8"?>
<navigation
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/nav_main"
    app:startDestination="@id/nav_list">

    <include app:graph="@navigation/nav_list" />
    <include app:graph="@navigation/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)

但默认情况下,无法向编辑器上的包含图形添加操作:

SS1

我可以在 xml 文件中添加一个全局操作,然后在编辑器中显示:

<?xml version="1.0" encoding="utf-8"?>
<navigation
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/nav_main"
    app:startDestination="@id/nav_list">

    <include app:graph="@navigation/nav_list" />
    <include app:graph="@navigation/nav_detail" />
    
    <action
        android:id="@+id/action_global_detailFragment"
        app:destination="@id/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)

我不想使用全局操作,而是添加适当的actions 来封装导航模式。嵌套图已经包含它们的导航逻辑,可能只需要输入作为入口点。我不确定这是否不受支持并且我遗漏了一些东西,否则为什么不呢?在两个或多个包含的图形之间导航的方法是什么?

android android-navigation android-architecture-components android-architecture-navigation

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

来自OpenGLRenderer的GL错误:0x502

我们的代码在Canvas上执行非常简单的操作(完全在UI线程中):drawText,translate,save,restore.

偶尔,我们得到这个(在Nexus 4上运行4.3):

W/Adreno200-ES20(22118): <gl_draw_error_checks:550>: GL_INVALID_OPERATION
D/OpenGLRenderer(22118): GL error from OpenGLRenderer: 0x502
E/OpenGLRenderer(22118):   GL_INVALID_OPERATION
Run Code Online (Sandbox Code Playgroud)

并且相应的文本不会绘制到画布上.

一个问题是它是随机发生的.代码将在没有错误的情况下工作,可能会有10-20个调用,然后会出现此错误,然后再返回正常工作,再次在错误之前再进行10-20次调用.

编辑:这是跟踪:

glEnable(cap = GL_BLEND)
glViewport(x = 0, y = 0, width = 768, height = 1184)
glStartTilingQCOM(x = 0, y = 0, width = 768, height = 1134, preserveMask = 0)
glPixelStorei(pname = GL_UNPACK_ALIGNMENT, param = 1)
glBindTexture(target = GL_TEXTURE_2D, texture = 37)
glPixelStorei(pname = GL_UNPACK_ROW_LENGTH, param = 2048)
glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 1400, yoffset = 61, width = 448, …
Run Code Online (Sandbox Code Playgroud)

android opengl-es android-canvas

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

是否可以通过一次调用Canvas.drawText()来显示多色文本?

我想使用Canvas.drawText()来显示多色文本.更具体地说,我想突出显示传递给drawText()方法的文本的子字符串.

文本采用具有0个或更多ForegroundColorSpan对象的SpannableString形式.

看看Canvas代码,看来对传递的CharSequence进行.toString()调用意味着这是不可能的.

还有另一种方法吗?

编辑:文本可能偶尔会更改(总更改,而不是增量).此外,在自定义视图中可能存在多个位于不同不相关位置的文本.

android android-canvas

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

可以从Service.onBind()中调用Service.startService()吗?

我有一个服务,我想确保不会停止()当不再有任何活动绑定它.

我知道startService()用于实现这一点,但是可以从服务的onBind()方法中调用它吗?

从活动中调用它对我来说似乎是一个黑客,因为服务知道它是否想要在onUnbind()之后闲逛.

活动指示服务的当前状态并提供一些控制,因此bindService()似乎是在此使用的适当方法.

android android-service

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

Android Intent跟随Twitter用户?

在我的关于屏幕中,我想允许用户轻松"关注"我的Twitter帐户.

我希望现有的Twitter应用程序支持某种Intent.我宁愿不在这里使用这个建议,因为这需要身份验证,AFAICT.

例如,如果用户已经安装了官方Twitter应用程序,那么在必要时,最好在该应用程序内完成任何身份验证.

我之前曾尝试联系官方Twitter应用程序背后的人,但没有得到回应.

twitter android android-intent

6
推荐指数
2
解决办法
3924
查看次数