1 // Copyright (C) 2002-2011 Nikolaus Gebhardt
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #include "IrrCompileConfig.h"
\r
7 #ifdef _IRR_COMPILE_ANDROID_ASSET_READER_
\r
9 #include "CAndroidAssetReader.h"
\r
11 #include "CReadFile.h"
\r
12 #include "coreutil.h"
\r
13 #include "CAndroidAssetReader.h"
\r
14 #include "CIrrDeviceAndroid.h"
\r
16 #include <android_native_app_glue.h>
\r
17 #include <android/native_activity.h>
\r
24 CAndroidAssetReader::CAndroidAssetReader(AAssetManager *assetManager, const io::path &filename)
\r
25 : AssetManager(assetManager), Filename(filename)
\r
27 Asset = AAssetManager_open(AssetManager,
\r
28 core::stringc(filename).c_str(),
\r
29 AASSET_MODE_RANDOM);
\r
33 CAndroidAssetReader::~CAndroidAssetReader()
\r
36 AAsset_close(Asset);
\r
39 size_t CAndroidAssetReader::read(void* buffer, size_t sizeToRead)
\r
41 int readBytes = AAsset_read(Asset, buffer, sizeToRead);
\r
42 if ( readBytes >= 0 )
\r
43 return size_t(readBytes);
\r
44 return 0; // direct fd access is not possible (for example, if the asset is compressed).
\r
47 bool CAndroidAssetReader::seek(long finalPos, bool relativeMovement)
\r
49 off_t status = AAsset_seek(Asset, finalPos, relativeMovement ? SEEK_CUR : SEEK_SET);
\r
54 long CAndroidAssetReader::getSize() const
\r
56 return AAsset_getLength(Asset);
\r
59 long CAndroidAssetReader::getPos() const
\r
61 return AAsset_getLength(Asset) - AAsset_getRemainingLength(Asset);
\r
64 const io::path& CAndroidAssetReader::getFileName() const
\r
70 } // end namespace io
\r
71 } // end namespace irr
\r
73 #endif // _IRR_COMPILE_ANDROID_ASSET_READER_
\r