android :: AssetManager :: defaultinit
# Assets manager using a `NativeAssetManager` to manage android assets
class AssetManager
# Native asset manager
private var native_assets_manager: NativeAssetManager = app.native_context.assets.new_global_ref is lazy
# Close this asset manager
fun close do native_assets_manager.close
# Get the locales that this assets manager contains data for
fun locales: Array[String] do
var java_array = native_assets_manager.get_locales
var nit_array = new Array[String]
for s in java_array do
nit_array.add(s.to_s)
end
return nit_array
end
# Return a string array of all the assets at the given path
fun list(path: String): Array[String] do
sys.jni_env.push_local_frame(8)
var java_array = native_assets_manager.list(path.to_java_string)
var nit_array = new Array[String]
for s in java_array do
nit_array.add(s.to_s)
end
sys.jni_env.pop_local_frame
return nit_array
end
# Open an asset using ACCESS_STREAMING mode, returning a NativeInputStream
private fun open(file_name: String): NativeInputStream do
sys.jni_env.push_local_frame(2)
var return_value = native_assets_manager.open(file_name.to_java_string)
return return_value.pop_from_local_frame
end
# Open an asset using it's name and returning a NativeAssetFileDescriptor
# `file_name` is
private fun open_fd(file_name: String): NativeAssetFileDescriptor do
sys.jni_env.push_local_frame(2)
var return_value = native_assets_manager.open_fd(file_name.to_java_string).new_global_ref
sys.jni_env.pop_local_frame
return return_value
end
# Open a file that is not an asset returning a NativeAssetFileDescriptor
private fun open_non_asset_fd(file_name: String): NativeAssetFileDescriptor do
var return_value = native_assets_manager.open_non_asset_fd(file_name.to_java_string)
return return_value
end
# Return a bitmap from the assets
private fun bitmap(name: String): NativeBitmap do
sys.jni_env.push_local_frame 2
var return_value = new NativeBitmap.from_stream(native_assets_manager.open(name.to_java_string))
return return_value.pop_from_local_frame
end
# Deallocate the global reference allocated by AssetManager
fun destroy do self.native_assets_manager.delete_global_ref
end
lib/android/assets_and_resources.nit:120,1--182,3