From 69b308a36881c6a46e25b1825cd466ad9540e4da Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Fri, 5 Jul 2013 14:08:37 +0400 Subject: [PATCH] Various fixes in android sample NativeActivity. --- samples/android/native-activity/.cproject | 2 +- samples/android/native-activity/AndroidManifest.xml | 5 ++++- samples/android/native-activity/jni/Android.mk | 2 +- samples/android/native-activity/jni/native.cpp | 21 ++++++++++++++++----- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/samples/android/native-activity/.cproject b/samples/android/native-activity/.cproject index 44aadfe..83ca04b 100644 --- a/samples/android/native-activity/.cproject +++ b/samples/android/native-activity/.cproject @@ -20,7 +20,7 @@ - + diff --git a/samples/android/native-activity/AndroidManifest.xml b/samples/android/native-activity/AndroidManifest.xml index 369bc75..55b696b 100644 --- a/samples/android/native-activity/AndroidManifest.xml +++ b/samples/android/native-activity/AndroidManifest.xml @@ -10,6 +10,7 @@ @@ -17,7 +18,9 @@ + android:label="@string/app_name" + android:screenOrientation="landscape" + android:configChanges="keyboardHidden|orientation"> diff --git a/samples/android/native-activity/jni/Android.mk b/samples/android/native-activity/jni/Android.mk index fd4fd2b..7ae31e2 100644 --- a/samples/android/native-activity/jni/Android.mk +++ b/samples/android/native-activity/jni/Android.mk @@ -7,7 +7,7 @@ include ../../sdk/native/jni/OpenCV.mk LOCAL_MODULE := native_activity LOCAL_SRC_FILES := native.cpp LOCAL_LDLIBS += -lm -llog -landroid -LOCAL_STATIC_LIBRARIES := android_native_app_glue +LOCAL_STATIC_LIBRARIES += android_native_app_glue include $(BUILD_SHARED_LIBRARY) diff --git a/samples/android/native-activity/jni/native.cpp b/samples/android/native-activity/jni/native.cpp index 5cfb3a9..0054da9 100644 --- a/samples/android/native-activity/jni/native.cpp +++ b/samples/android/native-activity/jni/native.cpp @@ -78,18 +78,29 @@ static void engine_draw_frame(Engine* engine, const cv::Mat& frame) return; } - void* pixels = buffer.bits; + int32_t* pixels = (int32_t*)buffer.bits; int left_indent = (buffer.width-frame.cols)/2; int top_indent = (buffer.height-frame.rows)/2; - for (int yy = top_indent; yy < std::min(frame.rows+top_indent, buffer.height); yy++) + if (top_indent > 0) { - unsigned char* line = (unsigned char*)pixels + left_indent*4*sizeof(unsigned char); - size_t line_size = std::min(frame.cols, buffer.width)*4*sizeof(unsigned char); + memset(pixels, 0, top_indent*buffer.stride*sizeof(int32_t)); + pixels += top_indent*buffer.stride; + } + + for (int yy = 0; yy < frame.rows; yy++) + { + if (left_indent > 0) + { + memset(pixels, 0, left_indent*sizeof(int32_t)); + memset(pixels+left_indent+frame.cols, 0, (buffer.stride-frame.cols-left_indent)*sizeof(int32_t)); + } + int32_t* line = pixels + left_indent; + size_t line_size = frame.cols*4*sizeof(unsigned char); memcpy(line, frame.ptr(yy), line_size); // go to next line - pixels = (int32_t*)pixels + buffer.stride; + pixels += buffer.stride; } ANativeWindow_unlockAndPost(engine->app->window); } -- 2.7.4