Запуск SharedCameraAPI. При прохождении ByteBuffer через JNI приложение вылетает.
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: Build fingerprint: 'samsung/d2que/d2q:10/QP1A.190711.020/N975U1UES2BTA1:user/release-keys'
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: Revision: '10'
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: ABI: 'arm64'
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: Timestamp: 2020-03-20 23:11:16-0400
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: pid: 7810, tid: 7861, name: sharedCameraBac >>> com.example.shared_native <<<
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: uid: 10323
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x6fb811b060
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x0 000000000000002e x1 00000070c5927220 x2 0000000000000001 x3 0000000000000049
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x4 0000000000000021 x5 8080800000800000 x6 fefeff6ed0ff4654 x7 7f7f7f7fff7f7f7f
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x8 b3f0189b32adbfe0 x9 b3f0189b32adbfe0 x10 0000006fd2a744a0 x11 0101010101010101
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x12 0000000000000018 x13 ffffffffffffffff x14 0000000000000000 x15 ffffffffffffffff
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x16 00000070c593a358 x17 00000070c74911bc x18 0000006fd1b38000 x19 000000702d8d0000
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x20 0000000000000000 x21 000000702d8d0000 x22 0000006fd2a74d00 x23 00000070379c8759
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x24 0000000000000004 x25 0000006fd2a76020 x26 000000702d8d00b0 x27 0000000000000001
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: x28 0000006fd2a74a90 x29 0000006fd2a74a50
2020-03-20 23:11:16.058 7952-7952/? A/DEBUG: sp 0000006fd2a74a10 lr 0000006fb811b060 pc 0000006fb811b060
2020-03-20 23:11:16.073 7810-7882/com.example.shared_native E/ArCore-Cameras: Failed to extract the metadata or correct the timestamp, status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.076 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.093 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.105 7810-7882/com.example.shared_native E/ArCore-Cameras: Failed to extract the metadata or correct the timestamp, status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.111 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.128 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: backtrace:
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #00 pc 000000000000d060 /data/app/com.example.shared_native-h2vjpvLs-rSAJ1BRZaMQSA==/lib/arm64/libNativeID3DLib.so (Java_com_example_shared_1native_shared_1camera_SharedCameraLib_getImageBuffer+100) (BuildId: a4f26d3b2bb811326e6db0566a0573bb0f61f84e)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #01 pc 0000000000140350 /apex/com.android.runtime/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #02 pc 00000000001375b8 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #03 pc 000000000014600c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #04 pc 00000000002e3d6c /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #05 pc 00000000002defcc /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+892) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #06 pc 00000000005a495c /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+372) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #07 pc 0000000000131994 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #08 pc 000000000001989e [anon:dalvik-classes.dex extracted in memory from /data/app/com.example.shared_native-h2vjpvLs-rSAJ1BRZaMQSA==/base.apk] (com.example.shared_native.shared_camera.SharedCameraActivity.onImageAvailable+70)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #09 pc 00000000005a3968 /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #10 pc 0000000000131a14 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #11 pc 00000000001f5e88 /system/framework/framework.jar (android.media.ImageReader$ListenerHandler.handleMessage+72)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #12 pc 00000000005a2148 /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #13 pc 0000000000131814 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #14 pc 000000000035aa86 /system/framework/framework.jar (android.os.Handler.dispatchMessage+38)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #15 pc 00000000005a2148 /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #16 pc 0000000000131814 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #17 pc 000000000039ae6e /system/framework/framework.jar (android.os.Looper.loop+466)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #18 pc 00000000005a4bf8 /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1040) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #19 pc 0000000000131994 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #20 pc 000000000035a184 /system/framework/framework.jar (android.os.HandlerThread.run+56)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #21 pc 00000000002b5080 /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.7038959461964381116+240) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #22 pc 00000000005933f0 /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #23 pc 0000000000140468 /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #24 pc 0000000000137334 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #25 pc 0000000000145fec /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #26 pc 00000000004b1884 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #27 pc 00000000004b2998 /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #28 pc 00000000004f38c4 /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176) (BuildId: f14fc1e82182cc00739b366cfefd8688)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #29 pc 00000000000e6f10 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) (BuildId: 55ce0a7d78144b0290f9746ed1615719)
2020-03-20 23:11:16.133 7952-7952/? A/DEBUG: #30 pc 00000000000850c8 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 55ce0a7d78144b0290f9746ed1615719)
2020-03-20 23:11:16.139 7810-7882/com.example.shared_native E/ArCore-Cameras: Failed to extract the metadata or correct the timestamp, status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.146 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.164 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.182 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.199 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.217 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.235 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.253 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.270 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.287 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.305 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.315 847-2912/? E/AF_DEBUG: [cam_id_0][CMG_EFL] UpdateAfStatus (line 318) : AF status 0x2 0x1
2020-03-20 23:11:16.322 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.339 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.348 847-2911/? E/AF_DEBUG: [CMG_AF_NOTI][cam_id_0] MovieCafPhaseFindGoal(). curr(117), Estgoal(164) OffsetGoal(164)
2020-03-20 23:11:16.357 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.374 7810-7856/com.example.shared_native E/ArCore-Cameras: Metadata for GL texture didn't arrive. camera_id= 0 status= DEADLINE_EXCEEDED: Timed out waiting for metadata
2020-03-20 23:11:16.376 1173-1173/? E//system/bin/tombstoned: Tombstone written to: /data/tombstones/tombstone_05
2020-03-20 23:11:16.383 847-2914/? E/AF_DEBUG: [CMG_AF_NOTI][cam_id_0] MovieCafPhaseFindGoal(). curr(128), Estgoal(168) OffsetGoal(168)
2020-03-20 23:11:16.393 753-753/? E/audit: type=1701 audit(1584760276.385:235403): auid=4294967295 uid=10323 gid=10323 ses=4294967295 subj=u:r:untrusted_app_27:s0:c67,c257,c512,c768 pid=7810 comm="sharedCameraBac" exe="/system/bin/app_process64" sig=5 res=1
2020-03-20 23:11:16.398 1162-1371/? E/system_server: Invalid ID 0x00000000.
2020-03-20 23:11:16.414 847-2914/? E/AF_DEBUG: [CMG_AF_NOTI][cam_id_0] MovieCafPhaseFindGoal(). curr(142), Estgoal(167) OffsetGoal(167)
2020-03-20 23:11:16.428 847-2915/? E/CHI: [SS_ERR ]: [CHI_UNI ]: camxchinodeUniDepth.cpp: CheckDependency: 708: CheckDependency(0)
2020-03-20 23:11:16.429 1162-1785/? E/InputDispatcher: channel '38ed456 Toast (server)' ~ Channel is unrecoverably broken and will be disposed!
2020-03-20 23:11:16.429 1162-1785/? E/InputDispatcher: channel 'fa09904 com.example.shared_native/com.example.shared_native.shared_camera.SharedCameraActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2020-03-20 23:11:16.442 1037-1250/? E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -32
2020-03-20 23:11:16.442 1037-1250/? E/Camera3-OutputStream: returnBufferCheckedLocked: Stream 0: Error queueing buffer to native window: Broken pipe (-32)
2020-03-20 23:11:16.442 1037-1250/? E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -32
2020-03-20 23:11:16.442 1037-1250/? E/Camera3-OutputStream: returnBufferCheckedLocked: Stream 1: Error queueing buffer to native window: Broken pipe (-32)
2020-03-20 23:11:16.442 1037-30968/? E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -32
2020-03-20 23:11:16.442 1037-30968/? E/Camera3-OutputStream: returnBufferCheckedLocked: Stream 0: Error queueing buffer to native window: Broken pipe (-32)
2020-03-20 23:11:16.443 1037-7908/? E/Camera3-OutputStream: getBufferLockedCommon: Stream 1: Can't dequeue next output buffer: Broken pipe (-32)
2020-03-20 23:11:16.443 1037-7908/? E/CameraDeviceClient: notifyError: pid=7810, errorCode=3
2020-03-20 23:11:16.443 1037-7859/? E/Camera3-OutputStream: getBufferLockedCommon: Stream 0: Can't dequeue next output buffer: Broken pipe (-32)
2020-03-20 23:11:16.443 1037-7859/? E/CameraDeviceClient: notifyError: pid=7810, errorCode=3
2020-03-20 23:11:16.447 1037-4560/? E/CameraDeviceClient: notifyError: pid=7810, errorCode=0
2020-03-20 23:11:16.447 1037-4560/? E/CameraDeviceClient: Disconnect from CameraDeviceClient
Android Studio 3.6.1 Build # AI-192.7142.36.36.6241897, построено 27 февраля 2020 г. Версия среды выполнения: 1.8.0_212- release-1586-b4-5784211 amd64 VM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro Linux 5.3.0-42-generi c
com.google.ar: ядро: 1.15.0 Samsung Galaxy Note 10+ SM-N975U1
Создание отпечатка пальца: 'samsung / d2que / d2q: 10 / QP1A.190711.020 / N975U1UES2BTA1: пользовательские / клавиши разблокировки'
ШАГИ, ЧТОБЫ ВОСПРОИЗВОДИТЬ ПРОБЛЕМУ
Добавить ByteBuffer imageBuffer в метод onAvailableListener в SharedCameraActivity:
@Override
public void onImageAvailable(ImageReader imageReader) {
Image image = imageReader.acquireLatestImage();
imageBuffer = image.getPlanes()[0].getBuffer().asReadOnlyBuffer();
if (image == null) {
Log.w(TAG, "onImageAvailable: Skipping null image.");
return;
}
SharedCameraLib.getImageBuffer(imageBuffer);
imageBuffer.clear();
image.close();
}
Попробуйте прочитать JNI
extern "C"
JNIEXPORT jboolean JNICALL
Java_com_example_shared_1native_shared_1camera_SharedCameraLib_getImageBuffer(
JNIEnv *env,
jclass clazz,
jobject image_buffer) {
void* cData = (jbyte *)env->GetDirectBufferAddress(image_buffer);
LOGI("Image buffer passed successfully.");
}
Редактировать: я начал с создания этой нативной библиотеки и вот что выглядит так:
#include <jni.h>
#include <android/log.h>
#include <string>
#define LOG_TAG "example_native"
#ifdef __cplusplus
extern "C" {
#endif
void GetJStringContent(JNIEnv *AEnv, jstring AStr, std::string &ARes) {
if (!AStr) {
ARes.clear();
return;
}
const char *s = AEnv->GetStringUTFChars(AStr,NULL);
ARes=s;
AEnv->ReleaseStringUTFChars(AStr,s);
}
JNIEXPORT void JNICALL
Java_com_java_sharedcamera_1example_SharedCameraLib_getImageBuffer(
JNIEnv* env, jobject, jobject image_buffer)
{
unsigned int *data = (unsigned int*)env->GetDirectBufferAddress(image_buffer);
for (int i=0; i<10; i++) {
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "IMAGE BUFFER %d", data[i]);
}
}
#ifdef __cplusplus
}
#endif
Он также не работал с IntBuffers, что побудило меня начать все сначала. Теперь он передает указатель буфера и не падает.
В чем здесь главное отличие? В первой итерации JNI передавался:
JNIEnv *env,
jclass clazz,
jobject image_buffer
, который, как я предполагаю, связан с тем, почему он не работал? Прошла вторая итерация:
JNIEnv* env,
jobject,
jobject image_buffer
Каждый раз, когда я пытался поменять местами jobject и jclass, выдается сообщение об ошибке. Когда вы создаете библиотеку JNI, что определяет, используете ли вы jobject и jclass clazz?