1
我正面臨使用本機代碼顯示位圖的問題。我的代碼如下從android中的本地代碼顯示位圖的問題
本機代碼
JNIEXPORT void JNICALL Java_app_Panel_renderbitmap(JNIEnv* env, jobject obj, jobject bitmap, jlong time_ms)
{
AndroidBitmapInfo info;
void* pixels;
int ret;
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
return;
}
if ((ret =AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
}
memcpy(pixels, pictureRGB, 480*320);
AndroidBitmap_unlockPixels(env, bitmap);
}
Java代碼的
Bitmap mBitmap = Bitmap.createBitmap(480, 320, Bitmap.Config.RGB_565);
renderbitmap(mBitmap, 0);
canvas.drawBitmap(mBitmap, 0, 0, null);
而我的應用程序崩潰時的memcpy,其中pictureRGB聲明爲 INT * pictureRGB [4];
所有像素都在pictureRGB內。我在做什麼有什麼不對嗎?我正確的值傳遞給位圖和memcpy?
是不是`renderbitmap`期望4個參數?你能發佈實際的錯誤嗎? – xil3 2011-02-11 16:13:23
當我調試時出現實際錯誤我可以在memcpy上看到SIGSEGEV。不知道我是否發送更少的字節數或更多? renderbitmap需要2個參數,因爲其他兩個參數都是jni默認值。 – 2011-02-11 16:16:07