Я использую вызовы JNI для загрузки файлов PNG с помощью растрового изображения класса Android с помощью этого руководства http://lol.zoy.org/blog/2011/3/2/load-pngs-using-android-ndk.
И это работает безупречно, пока я не попытаюсь получить данные пикселей из растрового изображения. Я просто не могу создать массив jint, который будет соответствовать данным изображения (512 * 256), приложение просто падает на этой строке. Я провожу тестирование, и оно работает без сбоев только с массивами jint размером <= 85000 (на моем HTC Desire).
Я думаю, что это ошибка нехватки памяти, но я не получаю соответствующей ошибки в logcat, и я пытаюсь создать только массив jint без какого-либо другого кода, он тоже вылетает. </p>
#include <jni.h>
int load_image_png(const char* path, GLuint* width, GLuint* height, void** image_data){
//Skip part what works fine - get bitmap width and height
//width=512, height=256
jintArray array = g_env->NewIntArray(width*height);//FAIL OVERHERE
jint* pixels = g_env->GetIntArrayElements(array, 0);
*image_data = pixels;
//closing a bitmap work fine too
return 0;
}
P.S. Было бы здорово, если бы кто-то мог дать альтернативный способ загрузки png из кода Java (без pnglib и нативных функций, как в http://androgeek.info/?p=275)