Android SDK 레벨과 Android NDK 레벨 사이에 바이트 버퍼를 보내려는 프로젝트에서 작업하고 있습니다.안드로이드에서 Honeycomb 아래의 Bytebuffer array() 메소드가 지원되지 않습니다.
권장되는 방법은 SDK 수준에서 즉 allocateDirect() 메소드를 사용하여 ByteBuffer를를 사용하는 것 같다가 수행
ByteBuffer frameBuf = ByteBuffer.allocateDirect(10000);
int frameSize = fillMyArrayMethod(frameBuf.array());
UseArrayInNdk(frameBuf);
모든 내 친구 그러나, 내 ICS 전화에 완벽한 일 안드로이드 2.3.3 버전 코드가 추락했다.
조사 결과, ByteBuffer의 array() 메소드는 2.3.3 버전의 Phone에서 UnsupportedOperationException을 던졌습니다.
분명히이 방법은 Honeycomb 아래의 Android 버전에서 지원되지 않습니다.
ByteBuffer frameBuf = ByteBuffer.allocateDirect(10000);
Byte[] tmpBuf = new byte[10000];
int frameSize = fillMyArrayMethod(tmpBuf);
for (int i=0; i<frameSize; i++)
{
frameBuf.put(i, tmpBuf[i]);
}
UseArrayInNdk(frameBuf);
: 내 버퍼에 배열 포인터를 얻을 수
그래서 이제이 같은 즉, 내 NDK에서 사용하기 전에 내 배열의 모든 데이터를 추가로 넣어()을 강요하고있어
Android Honeycomb 이상에서 코드를 작성하는 것이 좋습니다. 추가 복사를 피하기 위해 2.3.3 및 더 아래에 더 똑똑한 방법이 있습니까?