Tag: android

在android内核开发linux中使用蓝牙

我想知道如果有人有有用的链接或可以提供建议,我如何使用C / C ++而不是JAVA API在Android中使用蓝牙? 我找到了这篇文章,但我想知道我是否提供了完整的信息?

如何使用Android NDK将整数颜色的像素数组绑定到纹理?

我正在尝试将Android上的Java OpenGL代码移植到Native SDK,我需要一个IntBuffer实现。 基本上我在Java中将任意整数RGBA像素颜色数组加载到纹理中是: // pixel array pixelIntArray = new int[width * height]; bb = ByteBuffer.allocateDirect(pixelIntArray.length * 4); bb.order(ByteOrder.nativeOrder()); // native buffer pixelBuffer = bb.asIntBuffer(); // push integer array of pixels into buffer pixelBuffer.put(pixelIntArray); pixelBuffer.position(0); // bind buffer to texture gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, width, height, 0, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixelBuffer); 在C中,我可以使用缓冲区将纹理推送到四边形。 目前我只是将它绑定到C中的pixelIntArray,纹理变形。 基本上我需要能够通过类似于Java的NIO类的缓冲区将整数像素数组中的一系列颜色绑定到纹理。

在JNI函数(Android)之外从C调用java中的函数?

我正在尝试使用Android中的JNI从我的C代码调用Java函数,但我处于一种有点尴尬的境地。 我的C代码在传递给库的回调中的JNI函数之外执行。 这是java代码的一个例子 package com.my.java.package; class MyClass { public function handleData(byte[] data) { doSomethingWithThisData(data); } } 这是C代码的一个例子 void handleData(uint8_t *data, size_t len) { // I need to call handleData in my java // class instance from here, but i have // no access to a JNIEnv here. // I don’t think I can create one, […]

在.so中混合使用c / c ++和汇编时避免文本重定位

我试图从混合c,c ++和汇编的.so中删除所有文本重定位。 对于c / c ++ -fpic负责PIC。 在Android ARM目标上,我们可以从c / c ++调用导出的asm函数,而不会导致文本重定位。 但是在我们的实现中,我们有必须可以从C ++和程序集访问的数据数组。 在C ++上,它是一个普通的旧数组,即extern “C” { __declspec(align(32)) int16_t myarray[256]; } 在asm方面我们使用.global myarray 。 第二个我们在asm侧使用这样的符号,我们在最终的.so中看到文本重定位,这是通过scanelf和readelf可见的。 api模式23中的Android L加载器将拒绝加载这样的.so。 问题: – 这个问题值得期待吗? – 是否在C或asm方面使用了一些特殊声明以确保没有文本重定位? 编辑 :最小的例子会有用吗?

使用open2(,int fd)的Android libusb

我编译了libusb的修改版本,以便在Android设备中使用 https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/README 有没有关于如何在C程序中使用此特定function的示例? 需要包含哪些标头才能使此库正常工作。 有关如何在C程序中使用open2(,int fd)的任何示例

如何在C中使用’mmap’命令分配特定的内存区域? (Android NDK)

在C中使用’mmap’分配特定内存区域的正确方法是什么? 我已阅读/ proc / self / maps以确定该区域是否可用。 我尝试了以下内容,但在尝试写入分配的内存时崩溃了: // rdram is defined in header as: #define rdram ((unsigned int *)0x80000000) printf( “rdram=0x%x”, (int)rdram ); printf( “munmapping” ); munmap ((void*)0x80000000, 0x800000); printf( “mmapping” ); if(mmap ((void*)0x80000000, 0x800000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) <= 0) { printf( "mmap(0x80000000) failed" ); } else […]

无法使用android ndk灰显图像

我是android ndk的新手。我已经开始通过ruckus和IBM博客学习图像处理示例。 我想要弄清楚一个图像。 这是我正在使用的代码 显示的布局的xml文件 而java代码是 package com.example; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class GrayClass extends Activity { private ImageView imageView; private Bitmap bitmap; private Button button; private Bitmap original; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gray); original = BitmapFactory.decodeResource(getResources(), R.drawable.wallace); bitmap […]

C / Renderscript / Neon内在函数之间的电池功耗 – video滤波器(Edgedetection)APK

我使用Android NDK(使用C ++ API for Renderscript)开发了3个C / RS / Neon-Intrinsics版本的video处理算法。 来自JAVA前端的NDK侧的C / RS / Neon调用将进入Native级别。 我发现由于某些原因,与C和RS版本相比,Neon版本消耗大量功率。 我使用Trepn 5.0进行功率测试。 有人可以澄清一下这些方法C,Renderscript – GPU,Neon Intrinsics的功耗水平。 哪个消费最多? 什么是RS代码的理想功耗水平?,因为GPU以较低的时钟频率运行,功耗必须更低! Renderscript API是否专注于功耗优化? video – 1920×1080(20帧) C – 11115.067 ms(0.80mW) RS – 9867.170毫秒(0.43mW) Neon Intrinsic – 9160毫秒(1.49mW)

如何将本机库加载到本机android代码? (AndroidStudio)

我在文件夹jniLibs / your_architecture / mylib.so中有一个名为mylib的库 在Java中,要加载库,您只需在源代码中键入该代码: static { System.loadLibrary(“mylib”); } 但是如何在本机C代码中加载库(在Android Studio中)? 我补充说库不使用JNI约定,它是一个普通的共享库。

使用zlib列出android中apk文件的目录结构

我目前正在开发一个Android项目。 由于android apk文件本质上是一个具有不同文件扩展名的zip文件,是否可以使用zlib来归档资产文件夹的目录结构? 目标是编写一些接口,如opendir()和readdir(),以便我可以执行以下操作: DIR* dir = zip_opendir(“somedirectory”); struct dirent* entry; while (0 != (entry = zip_readdir(dir))){ __android_log_print(ANDROID_LOG_ERROR, “DIR”, “entry: %s\n”, entry->d_name); } 除了所有操作都发生在一个zip文件中。