Estoy tratando de obtener algunos datos de un archivo de dispositivo en la ruta /dev/graphics/fb0
en servicio, tengo permiso de root y ejecuto el comando chmod 777
, luego recibí un error de "permiso denegado".
Luego ejecuté: setenforce 0
, y el error desaparece, pero el tamaño del archivo sigue siendo cero
RandomAccessFile raf = new RandomAccessFile("/dev/graphics/fb0", "rw"); FileChannel fc = raf.getChannel(); logText.setText(raf.length() + " "); // length is 0 MappedByteBuffer mbb = fc.map(FileChannel.MapMode.PRIVATE, 0, 1024 * 1920 * 4); raf.close(); FileInputStream fileInputStream = new FileInputStream("/dev/graphics/fb0"); logText.setText(fileInputStream.available() + " "); // available is still 0
Se supone que no debes hacer una lectura normal en framebuffer AFAIK.
Deberá usar la ioctl
sys para leer/escribir en él. Vea algunos ejemplos:
https://android.googlesource.com/platform/system/extras/+/donut-release/tests/framebuffer/fb_test.c