小编Ste*_*e M的帖子

FFmpeg:无法在Android Q上使用文件描述符进行搜索

考虑到公共文件路径通常在Android Q中不可用的事实,我试图找出如何使FFmpeg音频解码器与文件描述符一起工作,而不将文件复制到应用程序的私有目录中。

我们可以使用Android Q隐私更改中所述的方法轻松获取文件描述符,并且可以使用管道协议打开文件描述符,如将本地fd int从可打开的URI传递给FFMPEG中所述。但是,使用找不到结果,av_seek_frame并且使用的duration成员也不提供持续时间AVFormatContext

有没有办法使用FFmpeg使用文件描述符进行搜索并检索持续时间?

android ffmpeg pipe file-descriptor android-10.0

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

Codingbat fix45有更简单的解决方案吗?

我试图解决这个CodingBat问题:

(这是一个稍微难以修复的版本问题.)返回一个包含与给定数组完全相同的数字的数组,但重新排列,以便每4个后面紧跟一个5.不要移动4,而是每隔一个数字可能会动.该数组包含相同数量的4和5,并且每4个数字后面的数字不是4.在此版本中,5可能出现在原始数组中的任何位置.

fix45({5, 4, 9, 4, 9, 5}) ? {9, 4, 5, 4, 5, 9}
fix45({1, 4, 1, 5}) ? {1, 4, 5, 1}
fix45({1, 4, 1, 5, 5, 4, 1}) ? {1, 4, 5, 1, 1, 4, 5}
Run Code Online (Sandbox Code Playgroud)

我最初使用的方法通过了所有的网站测试,但我认为它不适用于更长的数组.初始方法使用了2个循环并且没有使用新数组.我已经创建了一个引入新数组和第三个嵌套循环的解决方案,我相信它将适用于所有问题实例.但是,该网站声明本节中的问题可以通过2个循环来解决,所以我想知道是否确实有一个2循环解决方案可以解决问题的任何实例.这是问题和我的3循环解决方案:

public int[] fix45(int[] nums) {

    int[] locations = {-1};

    for (int i = 0; i < nums.length - 1; ++i) {

        if (nums[i] == 4) {

            JLoop:
            for (int j = nums.length-1; j >= 0; --j) {
                if …
Run Code Online (Sandbox Code Playgroud)

java algorithm

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

K&amp;R 1-10,终端吃退格

K&R C 1-10 写道:

“编写一个程序将其输入复制到其输出,用 \t 替换每个制表符,用 \b 替换每个退格符,用 \ 替换每个反斜杠。这使得制表符和退格符以明确的方式可见。”

我有以下代码,它不适用于退格字符,因为终端会吃掉该字符。到目前为止,书中所涵盖的材料似乎没有解决方案。解决方案是什么?

#include <stdio.h>

main()
{
    int c;

    while((c = getchar()) != EOF) {

        switch (c) {
            case '\t':
                printf("\\t");
                break;
            case '\b':
                printf("\\b");
                break;
            case '\\':
                printf("\\\\");
                break;
            default:
                putchar(c);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c

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

如何退出Visual Studio 2012中的"编辑样式"

进入编辑样式后..从格式菜单编辑当前如何返回常规设计器模式,您可以在其中编辑单个组件?我已经看了整个程序,并且谷歌了解了我能想到的一切,但无法弄明白.我必须关闭XAML文件并重新打开它.

wpf visual-studio visual-studio-2012

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

RejctedExecutionException 的原因是什么?

除了shutdown()之前在 Executor 上调用之外,是否还有其他原因导致 RejectedExecutionException 被抛出(我使用的是 singleThreadExecutor)?我有一些崩溃报告如下。它们非常罕见,我无法在我的设备上复制。我的代码太复杂而无法发布,但我没有看到在shutdown()调用之后提交任何任务在逻辑上是如何可能的。

是否有任何其他原因可以在此处抛出 RejectedExecutionException?

java.util.concurrent.RejectedExecutionException: 任务 java.util.concurrent.FutureTask@4194a5f0 从 java.util.concurrent.ThreadPoolExecutor@41a36e90 被拒绝[终止,池大小 = 0,活动线程 = 0,排队任务 = 0,完成的任务 = 9813] 在 java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1979) 在 java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:786) 在 java.util.concurrent.ThreadPoolExecutor.executorThreadPoolExecutor .java:1307) 在 java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:81) 在 java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:562) 在 com.smp.soundtouchandroid.AACFileAudioSink。在 com.smp.soundtouchandroid.SoundStreamRunnable 写入(AACFileAudioSink.java:28)。processChunk(SoundStreamRunnable.java:469) at com.smp.soundtouchandroid.SoundStreamRunnable.processFile(SoundStreamRunnable.java:406) at com.smp.soundtouchandroid.SoundStreamRunnable.run(SoundStreamRunnable.java:223) at java.lang.Thread.run (线程.java:856)

java multithreading android

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

带有基本活动的工具栏的高程阴影不可见

我使用 Android Studio 创建了一个“基本活动”,并尝试使用toolbar-not-showing-elevation-in-android-9-api-28 中的答案在 API 28 Pixel 设备上创建高程阴影。但是,没有显示高程阴影。该activity_main.xml文件当前为:

<androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            app:elevation="0dp"
            android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:elevation="16dp"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </com.google.android.material.appbar.AppBarLayout>

    <include layout="@layout/content_main"/>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            app:srcCompat="@android:drawable/ic_dialog_email"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

为什么高程阴影不再起作用Toolbar

android android-elevation

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

低内存可以导致本机代码中的seg错误吗?

我在本机代码中遇到了一组很少的崩溃,但这些崩溃很少发生在SEGV_MAPERR或SEGV_ACCERR中.这些崩溃几乎总是由Crashlytics报告,RAM速度非常低(通常为1-5%)."正常"崩溃(即我调试过的)在RAM中没有模式.

这些崩溃是否可能是由低内存条件引起的?这会是什么机制?有没有办法判断这些是低内存相关的崩溃或编程错误(错误地使用指针等)?在许多情况下,崩溃发生在我无法调试的库中,我无法在我的设备上复制崩溃.

以下是从开发者控制台中提取的一些崩溃,因为在这些情况下,它提供了比跟踪中的Crashlytics更多的细节:

********** Crash dump: **********
Build fingerprint: 'htc/a32eul_metropcs_us/htc_a32eul:5.1/LMY47O/637541.3:user/release-keys'
pid: 10902, tid: 10989, name: .xxx.xxxx  >>> com.xxx.xxxxx <<<
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x97f78000
Stack frame #00 pc 0004cd80  /data/app/xxx.xxx.xxxxx-1/lib/arm/libxxx.so: Routine xxxxxMixerInterleavedFloatOutput at libgcc2.c:?

********** Crash dump: **********
Build fingerprint: 'Xiaomi/land/land:6.0.1/MMB29M/V8.1.1.0.MALMIDI:user/release-keys'
pid: 2661, tid: 2746, name: .xxx.xxxx  >>> com.xxx.xxxx <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
Stack frame #00 pc 00016954  /system/lib/libc.so (__memcpy_base+36)
Stack frame #01 pc 0000b14c  /data/app/com.xxx.xxxx-2/lib/arm/libswresample-2.so: Routine ??
??:0
Run Code Online (Sandbox Code Playgroud)

c++ android segmentation-fault android-ndk crashlytics-android

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

升级 Gradle 插件后,XML 资源名称在发布版本中发生更改

将 Gradle 插件升级到 4.2.0 后(在此之前,我没有这个问题),在构建发布版本时,XML 资源文件的名称似乎发生了更改,例如从 更改res/xml/settings_master_switch_1.xmlres/cb1.xml.

这给我编写的库带来了问题,因为它采用 xml 中给出的资源名称,例如

<com.smp.masterswitchpreference.MasterSwitchPreference
       ..
        app:ms_includedPrefScreen="@xml/settings_master_switch_1" />
Run Code Online (Sandbox Code Playgroud)

并使用此函数查找资源 id

fun resInt(resName: String?, type: String): Int? {
                resName ?: return null
                val f = File(resName).nameWithoutExtension
                return context.resources.getIdentifier(f, type, context.packageName)
            }
Run Code Online (Sandbox Code Playgroud)

这个库的使用者可以简单地拥有

release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
Run Code Online (Sandbox Code Playgroud)

甚至minifyEnabled false产生问题。

带有演示应用程序的库可以在这里找到https://github.com/svenoaks/MasterSwitchPreference

所以我假设我必须在这个库的使用者中添加某种类型的 R8/Proguard 或 Gradle 设置才能不更改 xml 资源的名称?这个规则会是什么?

res/raw/keep.xml我尝试过定义要保留在消费者应用程序中的资源-

<resources xmlns:tools="http://schemas.android.com/tools"
 tools:keep="@xml/settings_master_switch_1,@xml/settings_master_switch_2,@drawable/ic_baseline_cake_24.xml" />
Run Code Online (Sandbox Code Playgroud)

并且这条规则在proguard-rules.pro

-verbose
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$* { …
Run Code Online (Sandbox Code Playgroud)

android proguard android-gradle-plugin android-r8

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

演员还有替代者吗?

我发现actor对于连续执行后台工作和安全的私有状态非常方便。不幸的是,它被标记为过时并且已经有一段时间了。尽管 Kotlin 协程添加了许多流程,但我找不到任何有关替代品的信息。

从今天开始,有没有办法通过添加新的协程库来实现与 Actor 相同的好处?实现这个目标的代码会是什么样子?

kotlin kotlin-coroutines

5
推荐指数
0
解决办法
1121
查看次数

HTML5:输入类型范围有"onrelease"之类的事件吗?

我需要在释放滑块时调用函数,"onchange"会在更改时更改值.这有解决方案吗?

像这样

<input type="range" min="0" max="1000" onrelease="callfunction()">
Run Code Online (Sandbox Code Playgroud)

html

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