Я пытаюсь сделать скриншоты своего Android-устройства (Samsung Galaxy Tab S5e) с помощью службы. Я использую код из здесь.
В связанном коде используется ImageReader.newInstance(mWidth, mHeight, PixelFormat.RGBA_8888, 2);
. Обратите внимание на PixelFormat.RGBA_8888
. Теперь это не позволит мне скомпилировать мой проект, и меня встречает ошибка: Error: Must be one of: ImageFormat.UNKNOWN, ImageFormat.RGB_565... etc
.
Итак, я попытался изменить PixelFormat.RGBA_8888
на ImageFormat.JPEG
, и он скомпилировался. Однако мое приложение теперь вылетает с сообщением:
Буфер формата BLOB, переопределяющий RGBA, должен иметь высоту == ширину
Я пытался изменить PixelFormat.RGBA_8888
на 0x4
, 0x1
, ImageFormat.RGB_565
и некоторые другие. Это часто приводит к исключению с сообщением:
Формат выходного буфера производителя 0x1 не соответствует настроенному формату буфера ImageReader 0x4.
Это каким-то образом связано с форматом, описанным в onImageAvailable(ImageReader reader)
.
Я видел следующий пост SO, и он кажется правильным формат зависит от устройства, но я пробовал их все, и ошибка одна из вышеперечисленных.
Я в полной растерянности (и я новичок в Java/Android), поэтому мне действительно нужна помощь.
PixelCopy request
. См. документацию здесь developer.android.com/reference/android/view/PixelCopy и пример здесь: stackoverflow.com/a/51103037/596841 Обратите внимание, что я не встраивал это в службу, хотя должно быть возможно. - person pookie   schedule 03.12.2020