Вот моя история.
Я разрабатываю приложение VR с Unity, работаю над телефоном Android с Samsung Gear VR. В этом приложении я хочу иметь возможность:
- Показывать живое видео с камеры (уже сделано с помощью веб-камеры)
- Сделать снимок. Не скриншот из WebcamTexture (это легко), а изображение в полном разрешении, сделанное непосредственно с камеры ! Здесь начинается сложная часть ...
В идеале приложение должно делать автофокусную фотографию в фоновом режиме и просто сохранять изображение в формате JPG в локальной памяти. Мое приложение справится с этим.
Вот что я сделал до сих пор:
Я попробовал эти библиотеки без успеха:
Поэтому я решил создать собственную библиотеку Android, скомпилированную в AAR, используя этот метод . Вот код моей библиотеки, он довольно прост:
package fr.mycompany.phototaker;
public class PhotoTaker {
public static void takePhoto() {
Log.d("PHOTOTAKER", "------- Take photo");
File imagePath = new File(UnityPlayer.currentActivity.getFilesDir(), "images");
File newFile = new File(imagePath, "Image_new.jpg");
Uri contentUri = FileProvider.getUriForFile(UnityPlayer.currentActivity, "fr.mycompany.phototaker.fileprovider", newFile);
// Utilisation de l'application par défaut pour utiliser la caméra
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);
UnityPlayer.currentActivity.startActivity(intent);
}
}
И я звоню из Unity:
photoTaker = new AndroidJavaClass("fr.mycompany.phototaker.PhotoTaker");
[...]
photoTaker.CallStatic("takePhoto");
Но Android не позволит мне сделать это. Видимо, я не могу начать "не VR" деятельность с подключенным GearVR. Вот ошибка, которую я получаю:
Warn ActivityManager: GearVR состыкован: не разрешено запускать активность без VR. Activity = ComponentInfo {com.se c. android .app.camera / com.se c. android .app.camera.Camera} intent = Intent {act = android .media.action. IMAGE_CAPTURE flg = 0x3 cmp = com.se c. android .app.camera / .Camera launchParam = MultiScreenLaunchParams {mDisplayId = 0 mFlags = 0} clip = {text / uri-list U: content: // fr. mycompany.phototaker.fileprovider / local_images / Image_new.jpg} (имеет дополнительные функции)} isVrActivity = false
У меня заканчиваются варианты ... Есть идеи?
Большое спасибо