# Asset

## Summary

| ### Enumerations ||
|---|---|
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga80155586fa275b28773c9b203f52caba{ https://developer.android.com/ndk/reference/group/asset#group___asset_1gga80155586fa275b28773c9b203f52cabaa5bf76576f07042f965f230086f7c09f4 = 0, https://developer.android.com/ndk/reference/group/asset#group___asset_1gga80155586fa275b28773c9b203f52cabaa88e1b2a920963d7596735fe28bf30e2f = 1, https://developer.android.com/ndk/reference/group/asset#group___asset_1gga80155586fa275b28773c9b203f52cabaac76f5fdb953097efc04e534474a7ea74 = 2, https://developer.android.com/ndk/reference/group/asset#group___asset_1gga80155586fa275b28773c9b203f52cabaa40ec098f4afb7c2869fa449d3059f6bb = 3 }` | enumAvailable access modes for opening assets with [AAssetManager_open](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga0037ce3c10a591fe632f34c1aa62955c). |

| ### Typedefs ||
|---|---|
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c` | typedef `struct https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c` [AAsset](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c) provides access to a read-only asset. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb` | typedef `struct https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb` [AAssetDir](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb) provides access to a chunk of the asset hierarchy as if it were a single directory. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771` | typedef `struct https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771` [AAssetManager](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771) provides access to an application's raw assets by creating [AAsset](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c) objects. |

| ### Functions ||
|---|---|
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gace1c4d0da274d643c5b10ca218cc6088(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb *assetDir)` | `void` Close an opened AAssetDir, freeing any related resources. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga4703b9f7baa3daeba248b6547de6b9b0(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb *assetDir)` | `const char *` Iterate over the files in an asset directory. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga45db6d19ad5e1c0f9b2e6b4059da14b3(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb *assetDir)` | `void` Reset the iteration state of [AAssetDir_getNextFileName()](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga4703b9f7baa3daeba248b6547de6b9b0) to the beginning. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gadfd6537af41577735bcaee52120127f4(JNIEnv *env, jobject assetManager)` | `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771 *` Given a Dalvik AssetManager object, obtain the corresponding native AAssetManager object. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga0037ce3c10a591fe632f34c1aa62955c(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771 *mgr, const char *filename, int mode)` | `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *` Open an asset. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gab5b57ff012d6d1024d8bf5d30aedced4(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771 *mgr, const char *dirName)` | `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb *` Open the named directory within the asset hierarchy. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga1f241e49f691dafcada23bcb76155122(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `void` Close the asset, freeing all associated resources. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga553a14512a98542306238c3ce70d344f(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `const void *` Get a pointer to a buffer holding the entire contents of the assset. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gae409aa65e5cd9952859e56308e4b5206(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `off_t` Report the total size of the asset data. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga55c8bc459327d5d23089e6a4b453f3f1(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `off64_t` Report the total size of the asset data. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gac6ed067b004eb95ed901bdd4b05f1e3e(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `off_t` Report the total amount of asset data that can be read from the current position. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga21e7221d88dcc44106843192b66755b5(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `off64_t` Report the total amount of asset data that can be read from the current position. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga20344cb952a77fa1004f592fb1b55124(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset)` | `int` Returns whether this asset's internal buffer is allocated in ordinary RAM (i.e. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gaa34e35e5f3d087d2b4d1910932d7eb7a(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset, off_t *outStart, off_t *outLength)` | `int` Open a new file descriptor that can be used to read the asset data. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga123a44a575f85d91a00a8456dab7bd0a(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset, off64_t *outStart, off64_t *outLength)` | `int` Open a new file descriptor that can be used to read the asset data. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gaadd86322c1fda5121b6d33745c317fb9(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset, void *buf, size_t count)` | `int` Attempt to read 'count' bytes of data from the current offset. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1gae59635ce2e559d83b6f31e8bc5cf0dfe(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset, off_t offset, int whence)` | `off_t` Seek to the specified offset within the asset data. |
| `https://developer.android.com/ndk/reference/group/asset#group___asset_1ga81fbe4368de24a3296ef7a6eba0053c7(https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c *asset, off64_t offset, int whence)` | `off64_t` Seek to the specified offset within the asset data. |

## Enumerations

### Anonymous Enum 17

Declared in `android/asset_manager.h`

```text
 Anonymous Enum 17
```
Available access modes for opening assets with [AAssetManager_open](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga0037ce3c10a591fe632f34c1aa62955c).

| Properties ||
|---|---|
| `AASSET_MODE_BUFFER` | Caller plans to ask for a read-only buffer with all data. |
| `AASSET_MODE_RANDOM` | Read chunks, and seek forward and backward. |
| `AASSET_MODE_STREAMING` | Read sequentially, with an occasional forward seek. |
| `AASSET_MODE_UNKNOWN` | No specific information about how data will be accessed. |

## Typedefs

### AAsset

Declared in `android/asset_manager.h`

```text
struct AAsset AAsset
```
[AAsset](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c) provides access to a read-only asset.

[AAsset](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c) objects are NOT thread-safe, and should not be shared across threads.

### AAssetDir

Declared in `android/asset_manager.h`

```text
struct AAssetDir AAssetDir
```
[AAssetDir](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb) provides access to a chunk of the asset hierarchy as if it were a single directory.

The contents are populated by the [AAssetManager](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771).

The list of files will be sorted in ascending order by ASCII value.

### AAssetManager

Declared in `android/asset_manager.h`

```text
struct AAssetManager AAssetManager
```
[AAssetManager](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771) provides access to an application's raw assets by creating [AAsset](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga5630b1f1aa5cd363303018cb2f12f95c) objects.

AAssetManager is a wrapper to the low-level native implementation of the java [AAssetManager](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771), a pointer can be obtained using [AAssetManager_fromJava()](https://developer.android.com/ndk/reference/group/asset#group___asset_1gadfd6537af41577735bcaee52120127f4).

The asset hierarchy may be examined like a filesystem, using [AAssetDir](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga001a6b9c36a06ee977b9f51ed7103cdb) objects to peruse a single directory.

A native [AAssetManager](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga90c459935e76acf809b9ec90d1872771) pointer may be shared across multiple threads.

## Functions

### AAssetDir_close

Declared in `android/asset_manager.h`

```scdoc
void AAssetDir_close(
  AAssetDir *assetDir
)
```
Close an opened AAssetDir, freeing any related resources.

### AAssetDir_getNextFileName

Declared in `android/asset_manager.h`

```gdscript
const char * AAssetDir_getNextFileName(
  AAssetDir *assetDir
)
```
Iterate over the files in an asset directory.

A NULL string is returned when all the file names have been returned.

The returned file name is suitable for passing to [AAssetManager_open()](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga0037ce3c10a591fe632f34c1aa62955c).

The string returned here is owned by the AssetDir implementation and is not guaranteed to remain valid if any other calls are made on this AAssetDir instance.

### AAssetDir_rewind

Declared in `android/asset_manager.h`

```scdoc
void AAssetDir_rewind(
  AAssetDir *assetDir
)
```
Reset the iteration state of [AAssetDir_getNextFileName()](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga4703b9f7baa3daeba248b6547de6b9b0) to the beginning.

### AAssetManager_fromJava

Declared in `android/asset_manager_jni.h`

```scdoc
AAssetManager * AAssetManager_fromJava(
  JNIEnv *env,
  jobject assetManager
)
```
Given a Dalvik AssetManager object, obtain the corresponding native AAssetManager object.

Note that the caller is responsible for obtaining and holding a VM reference to the jobject to prevent its being garbage collected while the native object is in use.

### AAssetManager_open

Declared in `android/asset_manager.h`

```gdscript
AAsset * AAssetManager_open(
  AAssetManager *mgr,
  const char *filename,
  int mode
)
```
Open an asset.

The object returned here should be freed by calling [AAsset_close()](https://developer.android.com/ndk/reference/group/asset#group___asset_1ga1f241e49f691dafcada23bcb76155122).

### AAssetManager_openDir

Declared in `android/asset_manager.h`

```gdscript
AAssetDir * AAssetManager_openDir(
  AAssetManager *mgr,
  const char *dirName
)
```
Open the named directory within the asset hierarchy.

The directory can then be inspected with the AAssetDir functions. To open the top-level directory, pass in "" as the dirName.

The object returned here should be freed by calling [AAssetDir_close()](https://developer.android.com/ndk/reference/group/asset#group___asset_1gace1c4d0da274d643c5b10ca218cc6088).

### AAsset_close

Declared in `android/asset_manager.h`

```scdoc
void AAsset_close(
  AAsset *asset
)
```
Close the asset, freeing all associated resources.

### AAsset_getBuffer

Declared in `android/asset_manager.h`

```gdscript
const void * AAsset_getBuffer(
  AAsset *asset
)
```
Get a pointer to a buffer holding the entire contents of the assset.

Returns NULL on failure.

### AAsset_getLength

Declared in `android/asset_manager.h`

```scdoc
off_t AAsset_getLength(
  AAsset *asset
)
```
Report the total size of the asset data.

### AAsset_getLength64

Declared in `android/asset_manager.h`

```scdoc
off64_t AAsset_getLength64(
  AAsset *asset
)
```
Report the total size of the asset data.

Reports the size using a 64-bit number insted of 32-bit as AAsset_getLength.

### AAsset_getRemainingLength

Declared in `android/asset_manager.h`

```scdoc
off_t AAsset_getRemainingLength(
  AAsset *asset
)
```
Report the total amount of asset data that can be read from the current position.

### AAsset_getRemainingLength64

Declared in `android/asset_manager.h`

```scdoc
off64_t AAsset_getRemainingLength64(
  AAsset *asset
)
```
Report the total amount of asset data that can be read from the current position.

Uses a 64-bit number instead of a 32-bit number as AAsset_getRemainingLength does.

### AAsset_isAllocated

Declared in `android/asset_manager.h`

```scdoc
int AAsset_isAllocated(
  AAsset *asset
)
```
Returns whether this asset's internal buffer is allocated in ordinary RAM (i.e.

not mmapped).

### AAsset_openFileDescriptor

Declared in `android/asset_manager.h`

```scdoc
int AAsset_openFileDescriptor(
  AAsset *asset,
  off_t *outStart,
  off_t *outLength
)
```
Open a new file descriptor that can be used to read the asset data.

If the start or length cannot be represented by a 32-bit number, it will be truncated. If the file is large, use AAsset_openFileDescriptor64 instead.

Returns \< 0 if direct fd access is not possible (for example, if the asset is compressed).

### AAsset_openFileDescriptor64

Declared in `android/asset_manager.h`

```scdoc
int AAsset_openFileDescriptor64(
  AAsset *asset,
  off64_t *outStart,
  off64_t *outLength
)
```
Open a new file descriptor that can be used to read the asset data.

Uses a 64-bit number for the offset and length instead of 32-bit instead of as AAsset_openFileDescriptor does.

Returns \< 0 if direct fd access is not possible (for example, if the asset is compressed).

### AAsset_read

Declared in `android/asset_manager.h`

```scdoc
int AAsset_read(
  AAsset *asset,
  void *buf,
  size_t count
)
```
Attempt to read 'count' bytes of data from the current offset.

Returns the number of bytes read, zero on EOF, or \< 0 on error.

### AAsset_seek

Declared in `android/asset_manager.h`

```scdoc
off_t AAsset_seek(
  AAsset *asset,
  off_t offset,
  int whence
)
```
Seek to the specified offset within the asset data.

'whence' uses the same constants as lseek()/fseek().

Returns the new position on success, or (off_t) -1 on error.

### AAsset_seek64

Declared in `android/asset_manager.h`

```scdoc
off64_t AAsset_seek64(
  AAsset *asset,
  off64_t offset,
  int whence
)
```
Seek to the specified offset within the asset data.

'whence' uses the same constants as lseek()/fseek().

Uses 64-bit data type for large files as opposed to the 32-bit type used by AAsset_seek.

Returns the new position on success, or (off64_t) -1 on error.