Я хочу программно сделать снимок экрана моего приложения и по определенным причинам (используя OpenGl SurfaceView, чтобы назвать его) я не хочу использовать обычно именованные методы, такие как использование кэша рисования видов.Я протестировал команду оболочки screencap -p , используя adb, и она отлично работала.Но если я выполню команду из моего приложения Xamarin для Android, используя следующий код:
Java.Lang.Process process;
process = Java.Lang.Runtime.GetRuntime().Exec("screencap -p /sdcard/test.png");
process.WaitFor();
, файл test.png будет создан, но размером всего 12B, и, очевидно, не отображает изображение (только серое с кружком!знак).У меня нет рутированного устройства (Samsung Galaxy Tab S3 btw), но так как команда работает через оболочку adb без и su или root, я бы подумал, что оно также может работать из приложения.
Так что мойвопросы: возможно ли сделать снимок экрана с помощью команды оболочки «screencap -p» из приложения на устройстве, которое не имеет рута?Если ответ «да», почему я сталкиваюсь с поврежденными файлами изображений?Каковы возможные причины этого и как избежать этого поведения?