Asset

摘要

枚举

Anonymous Enum 16{
  AASSET_MODE_UNKNOWN = 0,
  AASSET_MODE_RANDOM = 1,
  AASSET_MODE_STREAMING = 2,
  AASSET_MODE_BUFFER = 3
}
enum
使用 AAssetManager_open 打开 asset 的可用访问模式。

类型定义

AAsset typedef
struct AAsset
AAsset 提供对只读 asset 的访问。
AAssetDir typedef
struct AAssetDir
AAssetDir 提供对 asset 层级结构中某个部分的访问,就像它是单个目录一样。
AAssetManager typedef
struct AAssetManager
AAssetManager 通过创建 AAsset 对象来提供对应用原始 asset 的访问。

函数

AAssetDir_close(AAssetDir *assetDir)
void
关闭已打开的 AAssetDir,释放所有相关资源。
AAssetDir_getNextFileName(AAssetDir *assetDir)
const char *
迭代 asset 目录中的文件。
AAssetDir_rewind(AAssetDir *assetDir)
void
AAssetDir_getNextFileName() 的迭代状态重置到开头。
AAssetManager_fromJava(JNIEnv *env, jobject assetManager)
给定 Dalvik AssetManager 对象,获取相应的原生 AAssetManager 对象。
AAssetManager_open(AAssetManager *mgr, const char *filename, int mode)
AAsset *
打开 asset。
AAssetManager_openDir(AAssetManager *mgr, const char *dirName)
打开 asset 层级结构中指定的目录。
AAsset_close(AAsset *asset)
void
关闭 asset,释放所有相关资源。
AAsset_getBuffer(AAsset *asset)
const void *
获取指向包含 asset 全部内容的缓冲区的指针。
AAsset_getLength(AAsset *asset)
off_t
报告 asset 数据的总大小。
AAsset_getLength64(AAsset *asset)
off64_t
报告 asset 数据的总大小。
AAsset_getRemainingLength(AAsset *asset)
off_t
报告从当前位置可读取的 asset 数据总量。
AAsset_getRemainingLength64(AAsset *asset)
off64_t
报告从当前位置可读取的 asset 数据总量。
AAsset_isAllocated(AAsset *asset)
int
返回此 asset 的内部缓冲区是否分配在普通 RAM 中(即
AAsset_openFileDescriptor(AAsset *asset, off_t *outStart, off_t *outLength)
int
打开一个新的文件描述符,可用于读取 asset 数据。
AAsset_openFileDescriptor64(AAsset *asset, off64_t *outStart, off64_t *outLength)
int
打开一个新的文件描述符,可用于读取 asset 数据。
AAsset_read(AAsset *asset, void *buf, size_t count)
int
尝试从当前偏移量读取 'count' 字节的数据。
AAsset_seek(AAsset *asset, off_t offset, int whence)
off_t
定位到 asset 数据中的指定偏移量。
AAsset_seek64(AAsset *asset, off64_t offset, int whence)
off64_t
定位到 asset 数据中的指定偏移量。

枚举

Anonymous Enum 16

声明于 android/asset_manager.h
 Anonymous Enum 16

使用 AAssetManager_open 打开 asset 的可用访问模式。

属性
AASSET_MODE_BUFFER

调用者计划请求包含所有数据的只读缓冲区。

AASSET_MODE_RANDOM

读取分块,并向前和向后查找。

AASSET_MODE_STREAMING

顺序读取,偶尔向前查找。

AASSET_MODE_UNKNOWN

没有关于数据访问方式的特定信息。

类型定义

AAsset

声明于 android/asset_manager.h
struct AAsset AAsset

AAsset 提供对只读 asset 的访问。

AAsset 对象不是线程安全的,不应跨线程共享。

AAssetDir

声明于 android/asset_manager.h
struct AAssetDir AAssetDir

AAssetDir 提供对 asset 层级结构中某个部分的访问,就像它是单个目录一样。

内容由 AAssetManager 填充。

文件列表将按 ASCII 值升序排序。

AAssetManager

声明于 android/asset_manager.h
struct AAssetManager AAssetManager

AAssetManager 通过创建 AAsset 对象来提供对应用原始 asset 的访问。

AAssetManager 是 Java AAssetManager 低级原生实现的封装器,可以使用 AAssetManager_fromJava() 获取指针。

asset 层级结构可以像文件系统一样进行检查,使用 AAssetDir 对象浏览单个目录。

原生 AAssetManager 指针可以在多个线程之间共享。

函数

AAssetDir_close

声明于 android/asset_manager.h
void AAssetDir_close(
  AAssetDir *assetDir
)

关闭已打开的 AAssetDir,释放所有相关资源。

AAssetDir_getNextFileName

声明于 android/asset_manager.h
const char * AAssetDir_getNextFileName(
  AAssetDir *assetDir
)

迭代 asset 目录中的文件。

当所有文件名都已返回时,返回 NULL 字符串。

返回的文件名适合传递给 AAssetManager_open()

此处返回的字符串由 AssetDir 实现拥有,如果在同一 AAssetDir 实例上进行任何其他调用,不能保证其保持有效。

AAssetDir_rewind

声明于 android/asset_manager.h
void AAssetDir_rewind(
  AAssetDir *assetDir
)

AAssetDir_getNextFileName() 的迭代状态重置到开头。

AAssetManager_fromJava

声明于 android/asset_manager_jni.h
AAssetManager * AAssetManager_fromJava(
  JNIEnv *env,
  jobject assetManager
)

给定 Dalvik AssetManager 对象,获取相应的原生 AAssetManager 对象。

请注意,调用者负责获取并持有 jobject 的 VM 引用,以防止原生对象在使用期间被垃圾回收。

AAssetManager_open

声明于 android/asset_manager.h
AAsset * AAssetManager_open(
  AAssetManager *mgr,
  const char *filename,
  int mode
)

打开 asset。

此处返回的对象应通过调用 AAsset_close() 来释放。

AAssetManager_openDir

声明于 android/asset_manager.h
AAssetDir * AAssetManager_openDir(
  AAssetManager *mgr,
  const char *dirName
)

打开 asset 层级结构中指定的目录。

然后可以使用 AAssetDir 函数检查该目录。要打开顶级目录,将 "" 作为 dirName 传入。

此处返回的对象应通过调用 AAssetDir_close() 来释放。

AAsset_close

声明于 android/asset_manager.h
void AAsset_close(
  AAsset *asset
)

关闭 asset,释放所有相关资源。

AAsset_getBuffer

声明于 android/asset_manager.h
const void * AAsset_getBuffer(
  AAsset *asset
)

获取指向包含 asset 全部内容的缓冲区的指针。

失败时返回 NULL。

AAsset_getLength

声明于 android/asset_manager.h
off_t AAsset_getLength(
  AAsset *asset
)

报告 asset 数据的总大小。

AAsset_getLength64

声明于 android/asset_manager.h
off64_t AAsset_getLength64(
  AAsset *asset
)

报告 asset 数据的总大小。

使用 64 位数字而不是 AAsset_getLength 那样的 32 位数字报告大小。

AAsset_getRemainingLength

声明于 android/asset_manager.h
off_t AAsset_getRemainingLength(
  AAsset *asset
)

报告从当前位置可读取的 asset 数据总量。

AAsset_getRemainingLength64

声明于 android/asset_manager.h
off64_t AAsset_getRemainingLength64(
  AAsset *asset
)

报告从当前位置可读取的 asset 数据总量。

使用 64 位数字而不是 AAsset_getRemainingLength 那样的 32 位数字。

AAsset_isAllocated

声明于 android/asset_manager.h
int AAsset_isAllocated(
  AAsset *asset
)

返回此 asset 的内部缓冲区是否分配在普通 RAM 中(即

未 mmap)。

AAsset_openFileDescriptor

声明于 android/asset_manager.h
int AAsset_openFileDescriptor(
  AAsset *asset,
  off_t *outStart,
  off_t *outLength
)

打开一个新的文件描述符,可用于读取 asset 数据。

如果 start 或 length 不能由 32 位数字表示,它将被截断。如果文件很大,请改用 AAsset_openFileDescriptor64。

如果无法直接进行 fd 访问(例如,如果 asset 已压缩),则返回 < 0。

AAsset_openFileDescriptor64

声明于 android/asset_manager.h
int AAsset_openFileDescriptor64(
  AAsset *asset,
  off64_t *outStart,
  off64_t *outLength
)

打开一个新的文件描述符,可用于读取 asset 数据。

使用 64 位数字表示偏移量和长度,而不是 AAsset_openFileDescriptor 那样使用 32 位数字。

如果无法直接进行 fd 访问(例如,如果 asset 已压缩),则返回 < 0。

AAsset_read

声明于 android/asset_manager.h
int AAsset_read(
  AAsset *asset,
  void *buf,
  size_t count
)

尝试从当前偏移量读取 'count' 字节的数据。

返回读取的字节数,到达文件末尾时返回零,出错时返回 < 0。

AAsset_seek

声明于 android/asset_manager.h
off_t AAsset_seek(
  AAsset *asset,
  off_t offset,
  int whence
)

定位到 asset 数据中的指定偏移量。

'whence' 使用与 lseek()/fseek() 相同的常量。

成功时返回新位置,出错时返回 (off_t) -1。

AAsset_seek64

声明于 android/asset_manager.h
off64_t AAsset_seek64(
  AAsset *asset,
  off64_t offset,
  int whence
)

定位到 asset 数据中的指定偏移量。

'whence' 使用与 lseek()/fseek() 相同的常量。

对大文件使用 64 位数据类型,而不是 AAsset_seek 使用的 32 位类型。

成功时返回新位置,出错时返回 (off64_t) -1。