0

我想从本机代码提供表面缓冲区。所以我从 SurfaceView 的 SurfaceHolder 的 getSurface 方法中得到了表面。现在我想要的是从本机使用它来提供缓冲区来渲染图像。我已经包含了 SurfaceClinger/Surface.h。但是当我尝试获取 mSurface 属性时,它会抛出错误,说 java.lang.NoSuchFieldException for mSurface。在这方面的任何建议都会有所帮助。

代码片段:

Surface       mSurface;
SurfaceHolder mSurfaceHolder;

mSurface = mSurfaceHolder.getSurface();

try{
    class myClass = mSurface.getClass();
    String fieldName = "mSurface";
    Field field = myClass.getDeclaredField(fieldName);
    field.setAccesssible(true);
    int surfacePtr = field.getInt(mSurface);
    nativeInterface.DrawOnSurface(surfacePtr);
}
catch(Exception ex){}

谢谢。

4

1 回答 1

0

从姜饼开始,字段名称就不同了。通过将字段名从“mSurface”替换为“mNativeSurface”,问题就解决了。对于 froyo 及以下 'mSurface' 将起作用。

于 2013-02-25T06:18:40.753 回答