У меня есть один код Camera2 NDK, чтобы открыть камеру и получить изображения.
Код работает нормально через Android Application / Service, но если я скомпилирую и запусту его как исполняемый файл, камера откроется, но я неполучить любые кадры.
Есть идеи?кому-то удалось это сделать?
ПРИМЕЧАНИЕ
- Я создаю свой собственный AImageReader через "AImageReader_new"
- Я создаю свой собственный ANativeWindow через "AImageReader_getWindow"
NOTE2 (ДОБАВЛЕНО)
Звонки немного отличаются
Для приложений / служб Android звонки, такие как:
public void onCreate() {
JNIBridge.startPreview(null);
}
public void onDestroy() {
JNIBridge.stopPreview();
}
Для исполняемого файла:
int main()
{
Java_com_y30_nativecamera2_JNIBridge_startPreview(nullptr, nullptr, nullptr);
for(int i = 0; i < 10; ++i)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
Java_com_y30_nativecamera2_JNIBridge_stopPreview(nullptr, nullptr);
return 0;
}
ОБНОВЛЕНИЕ
Я снова протестировал его на нескольких устройствах Android.
S8 / S9 + (с Andorid 8.0.0) этоВоспроизвести. (Состояние «ACameraManager_openCamera» в порядке, но я не получаю никаких кадров)
Пиксель (с Android 9) метод «ACameraManager_openCamera» не выполнен.
10-09 10:45:04.933 933 1592 I CameraService: CameraService::connect call (PID -1 "", camera ID 0) for HAL version default and Camera API version 2
10-09 10:45:04.933 933 1592 W ServiceManager: Permission failure: android.permission.CAMERA from uid=2000 pid=19606
10-09 10:45:04.933 933 1592 E CameraService: Permission Denial: can't use the camera pid=19606, uid=2000
10-09 10:45:04.933 19606 19606 E ACameraManager: openCamera: connect camera device failed: Status(-8): '1: validateClientPermissionsLocked:906: Caller "" (PID 2000, UID 19606) cannot open camera "0" without camera permission'
UPDATE2
Я также протестировал его с msm8996 EVB (с Android 7.1.1):
(1) У меня проблема с разрешением, как у Pixel2.
(2) Я запустилс su и разрешением проблемы (камера открылась), но я уже не получаю никаких изображений.