在root设备上访问libgui.so api

时间:2016-02-08 09:35:10

标签: android android-ndk

对于学校项目的概念验证,我需要从Android ndk中的本机代码访问系统库。我已成功链接到libgui.so,libui.so ...等等。

但是,某些功能无法访问。具体来说,我使用ISurfaceComposer将屏幕捕获到BufferQueue上。我尝试使用BufferQueue-> acquireBuffer来读取帧,但adb给我一个错误“disconnected:unknown API”。

我已经尝试将应用及其库移动到系统文件夹中,但结果仍然相同。有没有办法在不构建整个Android系统的情况下访问这些系统库?

编辑:原生代码

const String16 name("SurfaceFlinger");
sp<ISurfaceComposer> composer;
getService(name, &composer);


sp <BufferQueue> bufferQueue = new BufferQueue();
wp <BufferQueue::ConsumerListener> listener = 
    static_cast<BufferQueue::ConsumerListener*>(this);
sp <BufferQueue::ProxyConsumerListener> proxy = 
    new BufferQueue::ProxyConsumerListener(listener);

status_t err = bufferQueue->consumerConnect(proxy, false);
if (err == NO_INIT)
    return "NO INIT";
else if (err == BAD_VALUE)
    return "BAD_VALUE";
else if (err != NO_ERROR)
    return "CONNECTION FAILED";

uint32_t w = 0;
uint32_t h = 0;

status_t err = composer->captureScreen(0, bufferQueue, w, h, 0, 0);
if (err != NO_ERROR)
    return "NOPE";

BufferQueue::BufferItem item;
err = bufferQueue->acquireBuffer(&item, 0);
if (err == BufferQueue::NO_BUFFER_AVAILABLE)
    return "NAH";
else if (err == NO_ERROR)
    return "NAH2";
else if (err == INVALID_OPERATION)
    return "NAH3";
else if (err == BufferQueue::PRESENT_LATER)
    return "NAH4";



return "HOPE";

编辑2:日志文件错误

02-08 09:56:18.318 5612-5612/com.mikaaudio.server E/BufferQueue: [unnamed-5612-0] disconnect: unknown API 0

0 个答案:

没有答案