小编FTL*_*lph的帖子

Android MediaCodec编码器 - 三星设备的奇怪结果

编辑:

似乎问题是这个设备不需要16个维度的多个...但是32的倍数.事实是,我仍然不知道如何确定什么量化为有问题的设备.这似乎使用qcom(我已经看到在Android 4.X上有问题,但这是Android 5.1.1).


我正在Android应用中编码视频.我正在使用Android MediaCodec这样做,将每帧的RGB转换为YUV并传入像素.

我使用的代码已经存在了一段时间,并且适用于我遇到过的任何设备.

一位用户带着一个错误报告来找我说他们的MP4很奇怪.该设备是三星T337A(Galaxy Tab 4).

这是MP4出口的样子:

在此输入图像描述

注 - 出于任何奇怪的原因,它不会在所有分辨率下发生.它确认发生在768x432和1280x720,但不会发生在640x352(例如我的应用程序确保所有分辨率都可以被16整除).

Nexus 5X(使用相同的半平面YUV格式)上,输出适用于所有分辨率.

所以这是该设备的东西,也许是我不知道的其他设备?


我查看了所有输出,它看起来正常并且与我上面提到的Nexus 5X相同(100%的时间都可以工作).

正在使用的MediaCodecInfo是OMX.qcom.video.encoder.avc,使用的颜色格式是2135033992(这是COLOR_FormatYUV420Flexible).所以基本上没什么奇怪的.

代码有点广泛,我会在必要时发布,但只是寻找为什么会发生这种情况的一般想法.我知道它是否更常见,但相同的代码适用于大量其他设​​备,所以一些时髦的东西正在发生......

android video-encoding android-hardware galaxy-tab mediacodec

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

权限拒绝:读取 com.android.providers.downloads.DownloadStorageProvider 需要 android.permission.MANAGE_DOCUMENTS

编辑:这不是重复的问题。毫无疑问,当您无法控制发送意图的活动时(在我的情况下,浏览器应用程序或文件浏览应用程序正在将意图发送到我的应用程序),我已经看到了如何解决此问题的答案。更具体地说,这不是处理照片/画廊。


这已经困扰我的一个应用程序有一段时间了。我个人无法在任何设备上发生这种情况,但我可以从崩溃中看到这种情况在其他设备上经常发生。

我的应用程序从外部应用程序接收包含 ZIP 文件的意图。onCreate()我在or中捕获它onNewIntent()

Intent intent = getIntent();
if (intent != null && intent.getData() != null)
    beginZipIntent(intent);
Run Code Online (Sandbox Code Playgroud)

beginZipIntent()

Uri data = intent.getData();
String filename = data.toString();

// Open input stream to copy ZIP to a temporary directory.
Uri uri = Uri.parse(filename);
InputStream inputStream = null;

try
{
    inputStream = getContentResolver().openInputStream(uri); // This fails
}
catch (Exception e)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

在上面的行中,某些设备出现故障:

Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider uri content://com.android.providers.downloads.documents/document/2772 from pid=26094, uid=10094 requires android.permission.MANAGE_DOCUMENTS, or …
Run Code Online (Sandbox Code Playgroud)

android file-permissions android-manifest android-permissions

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

Android Studio - 无法禁用即时运行

我有一个LibGDX项目,它由一个核心项目和多个依赖于它的Android /桌面项目组成.

我目前正在更改核心项目中的一些代码,但是当我运行项目时,手动构建,清理和运行更改并没有反映出来.

从我的搜索中我觉得这个问题与Instant Run有关,但我无法禁用它,因为复选框显示为灰色.

在此输入图像描述

我的问题与Instant Run有关吗?我将如何禁用它?

android libgdx android-studio android-instant-run

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

NullPointerExceptions仅适用于某些三星Galaxy设备?

我正在使用LibGDX.当我的应用程序启动时,它会创建一个屏幕.加载屏幕时,它会调用静态函数Module.createStyles().

这个函数创建了一系列样式,这些样式将在整个应用程序的其余部分使用(内置的LibGDX样式,如WindowStyle,LabelStyle,TextButtonStyle - 用于创建用户界面对象的所有类型的东西).

屏幕完成后,它会调用Module.disposeStyles().

无论如何,根据我的Google Analytics崩溃报告,我在尝试使用Module.dialogStyle创建一个Dialog时会随机获取NullPointerException:

ExitDialog exitDialog = new ExitDialog("Are you sure?", Module.dialogStyle);

Thread: GLThread 2089, Exception: java.lang.IllegalArgumentException: style cannot be null.
at package.Window.setStyle(Window.java:181)
at package.Window.<init>(Window.java:63)
at package.Dialog.<init>(Dialog.java:65)
at package.ExitDialog$1.<init>(ExitDialog.java:38)
Run Code Online (Sandbox Code Playgroud)

Module.dialogStyle绝对没有理由应该为null.我将此字段置为空的唯一位置是Module.disposeStyles(),此函数仅在应用程序的一个特定位置(最后)调用.

我认为这是我的代码中的一个错误,尽管95%的用户从未体验过它.但是,所有5%的用户体验它似乎都是Galaxy用户,我不确定这是不是巧合:

  • Galaxy S4
  • Galaxy S III
  • GALAXY Tab 3 lite

有人有主意吗?Galaxy设备没有内置的RAM管理器吗?这会与此有关吗?

java android nullpointerexception galaxy libgdx

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

有效的gif /图像颜色量化?

所以我试图在我的Java应用程序中编码一些动画gif文件.我一直在使用在线发现的一些类/算法,但似乎没有一个工作得很好.

现在我正在使用这个量化类将图像的颜色减少到256:http://www.java2s.com/Code/Java/2D-Graphics-GUI/Anefficientcolorquantizationalgorithm.htm

问题是,它似乎并不是非常"聪明".

如果我传入的图像超过256种颜色,它确实会减少颜色数,但效果不是很好.(红色变成蓝色等 - 非常明显的错误就像这样).

您可以推荐使用Java中的颜色量化的其他算法/库吗?


注意:我知道在此算法中使用的Neuquant:http://www.java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm

它非常慢并产生"eh"结果(帧之间的颜色闪烁).

java algorithm gif animated-gif quantization

5
推荐指数
2
解决办法
3305
查看次数

RGB 到 YUV420 平面和半平面?

在 Android 中,我有byte[]单独的 r、g、b、a 颜色组成图像的像素。

我需要将这些颜色转换为YUV420 平面或半平面(取决于设备),然后才能使用 Android 的 MediaCodec 和 MediaMuxer 创建这些图像的 MP4。

我目前正在我的 Nexus 10 上进行测试,报告称它使用COLOR_FormatYUV420Planar.

这是我必须将 RGB 转换为 YUV420 planar 的代码:

private void convertRGBAtoYUV420P(byte[] rgba, byte[] yuv, int width, int height)
{
    final int frameSize = width * height;
    final int chromasize = frameSize / 4;

    int yIndex = 0;
    int uIndex = frameSize;
    int vIndex = frameSize + chromasize;

    int R, G, B, Y, U, V;
    int index = …
Run Code Online (Sandbox Code Playgroud)

java rgb android yuv android-mediacodec

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

Firebase Crashlytics - 设置用户 ID 不起作用?

Firebase Crashlytics 的一个有用功能是为会话设置用户 ID,以便稍后查找该特定用户的崩溃事件。

但它似乎不适用于我的 Android 应用程序。我正在用我的设备进行调试。这是我的设备的 DebugView:

在此输入图像描述

其中 user_id 通过 Firebase Analytics 对象上的 setUserID 正确设置。

然后我触发了崩溃。但...

在此输入图像描述

它找不到我的用户ID?(不过我可以找到我触发的崩溃。)

我什至不知道还能尝试什么,根据 DebugView 的 userID 是否设置正确?

android firebase crashlytics firebase-analytics

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

如何为通用应用程序命名iOS启动图标?

这可能是一个微不足道的问题,但我似乎无法找到关于如何为iOS启动图标适当命名(以及使用的维度)的简明答案?

注意我没有使用Xcode,而是通过RoboVM将LibGDX游戏移植到iOS.这就是我的iOS / data /文件夹现在的样子:

在此输入图像描述

我想我已经正确设置了所有"默认"启动图像,但我不确定启动图标.(所有这些混乱都来自于有关新iPhone 6和6 Plus的信息很少的事实.)

基本上,什么启动图标文件错误和/或丢失?

哦,也在我的plist.xml文件中,这就是我所拥有的:

在此输入图像描述

如果我添加更多启动图标图像,我是否需要在此更改任何内容?

(如果不是很明显,我是iOS开发的新手.)

ios libgdx robovm

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