Articles of c ++

使用android NDK获取硬件浮点数

我已经开始玩Android NDK了。 我刚刚学到的一件事是创建一个application.mk文件来指定armv7 abi。 我正在使用以下参数构建san-angeles示例。 APP_MODULES := sanangeles APP_PROJECT_PATH := $(call my-dir)/../ APP_OPTIM := release APP_ABI := armeabi-v7a 然而,这似乎以与之前完全相同的速度运行(即严重)。 我只是GL限制而不是CPU限制或这里有什么问题吗? 我注意到在编译时我发出了以下命令行选项: -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb 令我担心的是“softfp”。 有提到v7 abi,​​VFP fpu的东西,我猜“拇指”指的是“拇指-2”指令(虽然我不知道究竟是什么)。 然而,“softfp”确实让我感到担忧。 难道不应该是“hardfp”吗? 有人对这些问题有任何想法吗? 我想我可能已准备好开始为我的HTC Desire实现一些GL ES 2.0代码,但我想确保我从中获得最佳速度:) 提前干杯!

如何确定wifi ap / network使用的wifi频道号码?

我发现有几个Android wifi应用程序(WiFi管理器,WiFi分析器)显示除了BSSID / SSID等之外的WiFi网络的频道号。但我找不到任何关于他们如何做的信息。 我唯一知道的是我可以获得一些wifi频率。 也许他们确定了与该频率相对应的频道? 有没有办法在android中检测wifi网络的频道? 当然这个信息并不是什么大问题,我可以没有它:)但我仍然很好奇……

Android POSIX兼容吗?

Android POSIX兼容吗? 我知道它使用Linux内核,但我不确定这是否意味着它与POSIX兼容,因为POSIX标准更多地处理用户空间function。 那么,它兼容吗? 例如,如果我在我的C程序中仅使用ANSI和POSIX函数,它是否可以在Android上编译和运行而无需任何代码更改?

如何使用c ++ 11支持为android作为共享库构建boost

我正在尝试使用c ++ 11支持为android构建boost_1.60.0(作为共享库)。 我正在使用最新的ndk(目前是android-ndk-r10e)。 构建主机是Windows-10。 这适用于非开源项目。 所以据我所知,我不能使用gnustl_shared,我需要使用c ++ _ shared作为android c ++运行时。 我的project-config.jam看起来像这样: androidNDKRoot = c:/android-ndk-r10e ; using gcc : android : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/ -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-rtti -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/../llvm-libc++abi/libcxxabi/include -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/../../android/support/include -IC:/android-ndk-r10e/platforms/android-9/arch-arm/usr/include -Wa,–noexecstack -Wformat -Werror=format-security -DUNIX -DANDROID -Wl,–no-undefined -fexceptions […]

如何将Celestia构建到Android?

Celestia是一个用于空间实时三维可视化的华丽应用程序,具有太阳系的详细模型,超过100,000颗恒星,超过10,000个星系,以及用于添加更多物体的扩展机制。 它可以运行在windows,mac os,linux,freeBSD上,然后是否有任何Android端口呢? 或者如何构建或移植到Android?

尽可能快地从C填充Android位图中的数据

我设法创建了一个android.graphics.Bitmap,我通过SetPixels命令成功填充它。 问题是我从RGBA数据开始。 然后我创建了一个jintArray。 然后我调用SetIntArray(有效地将数据memcpying到缓冲区)。 然后,最后,我调用setPixels来实际设置像素(这可能会导致另一个副本)。 这样做的一个大问题是,无论我使用R8G8B8A8还是R5G6B5或A8,我仍然需要将我的像素数据转换为R8G8B8A8数据。 理想情况下,我想要一种只使用一个副本填充缓冲区的方法,并允许我在不进行像素格式转换的情况下完成。 有没有办法直接获取位图中包含的缓冲区数据? 我看到JNI中有一个函数Ge​​tDirectBufferAddress,但是我可以在其上find的文档表明它仅限于java.nio.buffer。 我可以使用此function直接获取像素数据吗? 也许通过获取Bitmap类使用的内部缓冲区? 我唯一的方法是使用它来创建Global Ref’d Java.nio.buffer然后每次我想要更新,将我的像素数据复制到其中,然后使用copyPixelsFromBuffer? 这仍然涉及2个副本,但至少可以消除像素格式的变化。 这比我已经使用的方法更有效吗? 有没有更好的方法呢? 顺便说一句,我知道我可以使用中的函数,但我真的不想失去对Android 2.1和Android 2.2的支持…… 提前干杯!

任何Android模拟器都支持OpenGL ES顶点arrays对象吗?

我一直在尝试运行使用Android NDK在C ++中使用VAO并在模拟器上运行的代码。 我希望能够使用glDeleteVertexArraysOES , glGenVertexArraysOES和glBindVertexArrayOES 。 我发现模拟器无法运行代码,即使我使用OpenGL ES 2并使用此解决方案动态链接扩展: Android OpenGL ES 2.0中是否支持使用扩展的顶点数组对象? 我在运行API Level 19和GPU加速的Nexus 4仿真器上运行了glGetString(GL_EXTENSIONS) ,并获得了以下信息: GL_EXT_debug_marker GL_OES_EGL_image GL_OES_depth24 GL_OES_depth32 GL_OES_element_index_uint GL_OES_texture_float GL_OES_texture_float_linear GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_packed_depth_stencil GL_OES_vertex_half_float 我假设我需要看GL_OES_vertex_array_object才能使用顶点数组对象。 因此,对于那个特定的模拟器来说,这似乎是不可取的。 你知道在任何现有的Android模拟器(第三方或其他)上是否可以在OpenGL ES中使用顶点数组对象? 如果是这样,怎么样?

如何使用OpenCV获得像Cam Scanner一样的Magic Color效果

这是原始图像。 Cam Scanner魔幻色彩效果。 我在图像上的filter。 我正在改变图像的对比度。 dst.convertTo(dst, -1, 2, 0); 然后使用高斯模糊进行平滑。 cv::GaussianBlur(dst,result,cv::Size(0,0),3); cv::addWeighted(dst, 1.5, result, -0.5, 0, result); 我应该怎么做才能对我的形象产生这种影响? UPDATE 直方图均衡后 – vector channels; Mat img_hist_equalized; cvtColor(dst, img_hist_equalized, CV_BGR2YCrCb); split(img_hist_equalized,channels); equalizeHist(channels[0], channels[0]); merge(channels,img_hist_equalized); cvtColor(img_hist_equalized, img_hist_equalized, CV_YCrCb2BGR);

如何在Android中注册C ++ React Native模块

我有一个从facebook::xplat::module::CxxModule派生的C ++ React Native模块。 它适用于iOS项目,但现在我正在试图弄清楚如何从Java中使用它。 我find的唯一文档是React Native代码库中的注释,声明: 其实现是用C ++编写的NativeModules不能提供任何Java代码(因此可以在其他平台上重用),而应该使用CxxModuleWrapper注册自己 我的问题是如何使用CxxModuleWrapper在Java中注册C ++模块

无法运行程序“\ ndk-build.cmd”:启动失败

我从未参与过ndk。 但是我有一个使用ndk的项目。 它给了我java.lang.UnsatisfiedLinkError: Native method not found: 我试图在Google上搜索。 我有很多链接但是所有都与jni.cpp文件有关但我的错误是在java文件中。 所以我无法find如何纠正它。 “java.lang.UnsatisfiedLinkError: Native method not found: il.co.telavivapp2u.onceapponatime.SharedResources.ocvBitmapPreMultAlpha:(Landroi‌​‌​d/graphics/Bitmap;Landroid/graphics/Bitmap;) 我在此链接后集成了NDK。 这个项目由另一个开发人员完成我们正在添加更多function。 这部分由前面的开发人员完成。 我刚添加了Google Search API活动和图库图片活动,它将在网格上显示图片。 之前的开发人员已将一些图像放在可绘制文件夹中并将其显示在图库视图中。 无论他在最后做什么,它都能完美地运行。 即使现在也。 但是我添加了同样的事情并没有发生 单击应用程序可绘制图库视图上的图像后,它将进入相机活动,该活动将以所选图像作为背景捕获图像。 然后我们可以编辑并保存该图像。 但是在移动图库和谷歌搜索图像捕获应用程序后的情况下,ANR。 我已经将NDK路径和variables设置为eclipse,我也安装了c c ++插件 控制台也显示出来 Cannot run program “\ndk-build.cmd”: Launching failed . 我无法理解我犯错误的地方。 请帮帮我。 JNI文件 ANR发生在第207行。 这是我的代码: package il.co.telavivapp2u.onceapponatime; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; […]