问题标签 [native-activity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
962 浏览

android - 以编程方式将我的主屏幕设置为默认值

假设我的 android 设备中安装了多个主屏幕。启动或按下 HOME 键时,会显示一个对话框供用户选择所需的 HOME 屏幕和一个复选框以将此操作设置为默认值。

我想知道当我选择“将此操作设置为默认”复选框并启动应用程序时设置“默认”主屏幕的代码。

我需要它以两种不同的模式以编程方式控制主屏幕。

问候, 普拉加

0 投票
1 回答
488 浏览

android - android从本机活动返回需要太长时间

我的 android 应用程序有两个活动:用 Java 编写的前端和 NativeActivity 游戏。我使用 Android NDK 示例 (samples\native-activity\jni\main.c) 作为参考来为游戏创建主 C++ 模块。当用户想从游戏返回到前端时,我调用ANativeActivity_finish(g_state->activity). 之后我观察到的情况如下:

  1. APP_CMD_TERM_WINDOW进入engine_handle_cmd回调
  2. 我通过调用做出反应engine_term_display(就像示例一样)
  3. 出现前端活动。我可以按“播放”按钮再次启动游戏,但我一直在等待......
  4. APP_CMD_STOP进入engine_handle_cmd回调
  5. APP_CMD_DESTROY进入engine_handle_cmd回调
  6. if (state->destroyRequested != 0)在 main.cpp 的主循环中触发
  7. 就像在示例中一样,android_main返回。现在,终于可以安全地再次启动游戏了……

我想强调第 3 步和第 4 步之间的时间间隔大约是 10 秒(至少在 DEBUG 模式下)!如果我在第 3 步和第 4 步之间从 FrontEnd 重新启动游戏,它将启动“垂死”活动而不是新活动。

我不知道 APP_CMD_TERM_WINDOW 和 APP_CMD_STOP 之间发生了什么以及为什么需要这么长时间。我有另一个具有相同架构的应用程序,步骤 3 和 4 之间大约需要 0.3 秒。也许 GC 在第一个应用程序中还有更多工作要做......我不知道。所以我的问题是:

  1. NativeActivity 需要这么长时间才能完成它的完成过程是正常的吗?
  2. 当用户从 FrontEnd 重新启动游戏时,我如何防止遇到垂死的活动?

更新

我进入 LogCat:

05-29 18:27:17.729: W/ActivityManager(476): 启动超时已过期,放弃唤醒锁!05-29 18:27:17.739: W/ActivityManager(476): ActivityRecord{4209b2d0 u0 blah.blah.MainActivity} 的活动空闲超时

就在第 3 步和第 4 步之间。

谷歌搜索后,我发现这条消息被认为是“非危险的”,但也许它可以解释什么?

0 投票
0 回答
543 浏览

android - Android 在 NativeActivity 中禁用屏幕变暗

我需要从 NativeActivity 禁用/启用屏幕调光(当渲染由 OpenGL 执行时)。我继承了 MyNativeActivity:

然后我使用 JNI 从我的本机代码中调用此方法。我在 LogCat 中看到的是:

然后glGetError()(在我的渲染程序中)返回GL_INVALID_FRAMEBUFFER_OPERATION并且屏幕变黑。

似乎 Android 终止或重新创建我的绘图窗口以响应getWindow().addFlags(...). 但我没有收到任何通知engine_handle_cmd(即本机活动中的主要 C++ 消息回调)。我该如何处理或者我做错了什么?

更新

我试过了

但也导致

0 投票
2 回答
1266 浏览

android - 加载本机活动时出现“dlopen:无效参数”

我正在使用以下引导代码来加载我的本机活动(jngl-test):

我收到以下错误消息:

这根本没有告诉我出了什么问题。有没有办法获得更多的调试输出?“无效参数”是什么意思?

0 投票
1 回答
2840 浏览

android - Android OpenGL 口吃 - 垂直同步?

我的渲染循环有问题。在移动物体的过程中,我看到一个看起来像eglSwapBuffers交换相同缓冲区两次的小口吃。我的 FPS 一直在 59 - 60 FPS 之间。该运动deltaTime在计算新位置时考虑在内。

那会是什么???双缓冲能解决这个问题吗???

这是一个小视频(希望你能明白我的意思)。 http://youtu.be/bQYiqHUzPuI

这是我的渲染循环

这是更新功能

如果需要,我也可以发布我的EGLOpenGL设置。

更新 1:

UINT32 定义为

typedef unsigned int UINT32;

这是 1 秒的增量时间

不确定,但我认为“ f32DeltaTime : 0.006349 ”这行可能是问题所在......但为什么 f32DeltaTime 在某些帧中如此之小?eglSwapBuffers 在这个 Frame 上什么都不做???但为什么 ???一问一答:)

0 投票
1 回答
494 浏览

android - 从本机代码统一访问文件

我的应用程序有两个数据源:标准资产文件夹和下载的文件。现在我使用等访问资产(来自C ++代码)。我使用good old等从下载的文件中读取数据AAssetManager_open。是否可以使用统一的方式访问所有数据,东西?换句话说,我可以改变吗AAsset_readfopenfreadfopenfread

0 投票
1 回答
3240 浏览

android - NativeActivty 将无法启动 - 无法加载本机库

我创建了另一个问题,因为所有其他问题的答案都是相似但不相关的解决方案。我还确保这不是符号剥离问题。

我收到了可怕的错误:

一切编译和链接都很好。

我也有 app_dummy() 并且当我使用 objdump 运行时它会正确生成它:

如果重要的话,使用带有工具链 4.7.2 的 vs-android,针对 armv7-a 的 2.3.3 (android-10)。我有适当包含的库,并最终完全链接。

我仍然无法证明的一个理论是,我还需要将一些 .so 文件包含在 apk 中。我假设外部库(so)将与我自己的合并。如果不是这种情况,这可能会解释手头的问题。

我没有直接使用任何 makefile - vs-android 正在处理其中的大部分。我只能访问一些 .xml 和 .property 文件。

0 投票
2 回答
8872 浏览

android - 从 Android 上的 NativeActivity fopen/fread APK 资产

我只能找到 2010 年或更早的解决方案。所以我想看看在这方面是否有更新的立场。

我想避免使用 Java 并纯粹使用 C++ 来访问存储在 APK 中的文件(一些小于或大于 1MB)。使用AssetManager意味着我无法像其他所有操作系统(包括 iOS)上的所有其他文件一样访问文件。

如果没有,C++ 中是否有一种方法可以将 fopen/fread 映射到 AssetManager API?

0 投票
1 回答
363 浏览

android - 当 Native App 调用 eglSwapBuffers 时,Android MediaPlayer 不在 Scroll Plus 7 设备上显示视频

我有一个使用本机活动的应用程序,因为它主要是 C++ 代码(跨平台)。

我还需要播放视频和音频,所以还有另一个使用 MediaPlayer 播放视频和/或音频的 Activity。这与 Native Activity 结合使用,在 OpenGL 渲染的应用程序前播放视频。

MediaPlayer 活动基于 ApiDemos 示例中的活动,并且可以在大多数设备(Nexus 7/10、Galaxy S3/Tab2,甚至一些低成本设备,如 Fusion5)上正常工作。

但是在低成本的 Scroll Plus 7" 平板电脑上运行它 - 代码功能,但没有显示视频

音频播放,视频控件显示并且可用。

注意:我实际上已经能够破解代码以显示视频 - 尽管这不是解决方案,但它可能会帮助某人识别问题。

在我的本机代码中,Open Gl 渲染调用eglSwapBuffers,如果我将此行注释掉视频显示。(我在android_main里面循环完成渲染)

显然,这意味着我需要在后台进行的 OpenGL 渲染停止工作,所以我无法以这种方式修复它。

设备: Scroll Plus 7" TABLET by Storage Options Jelly Bean 4.1 来自 LogCat 我相信它正在运行基于 CedarX 的媒体解码器/渲染器。

0 投票
2 回答
7389 浏览

android - OpenGL ES错误到字符串

在 OpenGL ES 1.1 或 2.0 中是否有从glGetError()(Android 和 iOS)和(Android)获取错误字符串的标准?eglGetError()

我正在使用这样的东西:

可以很好地增强它以向调试器提供文本,而不必手动查找 GLenum 中存储的返回值__gle