This page contains information that is specific to using the Wwise SDK for the Android platform.
- You can simply install the Tegra Android Development Pack: http://developer.nvidia.com/tegra-android-development-pack.
You can build the Android libraries using the script MakeAllAndroid.sh in the SDK/source/SoundEngine folder. This will create the toolchain and call Make with the appropriate parameters. This script is currently hard-coded to build the armeabi-v7a architecture. The SDK can also be built for armeabi if you want to support older phones. To do so, change the script or call the makefile accordingly.
It is common to have stuttering or voice starvation on Android and iOS when using Bluetooth®. Because Bluetooth is made for streaming low-bandwidth data (compressed voice band-limited at 8 kHz), not interactive audio, there is not much that can be done.
However, while recognizing that some hardware models are more affected than others, adding more latency buffers can often help avoid the glitches. To do so, change the
AkPlatformInitSettings.uNumRefillsInVoice to 5 or 6.
There are three ways of deploying and loading SoundBanks on Android:
- Deploy SoundBanks as part of the Android application package (APK). Before deploying the application to devices, the SoundBanks have to be placed in the "assets" sub-folder of the Android NDK project.
- Deploy SoundBanks as part of an Android Application Split Binary (a.k.a. OBB).
- Deploy SoundBanks to the Android device file system directly. The SoundBanks can be deployed anywhere in the file system of the device. The GameSimulator application uses this method and the Low-level IO example can be found in $<Wwise>/SDK/samples/IntegrationDemo/Common/IntegrationDemo.cpp.
The default implementation of the Low-Level IO found in $<Wwise>/SDK/samples/SoundEngine/Android can access APK, OBB and POSIX files. You must call the function CAkDefaultIOHookBlocking::InitAndroidIO with a JavaVM and the NativeActivity to initialize both APK and OBB readers. The path to give to CAkDefaultIOHookBlocking::SetBasePath need to be relative to the root of the archive (same for APK and OBB). To load SoundBanks from the file system (outside APK or OBB), the path to the SoundBanks must be specified with CAkDefaultIOHookBlocking::AddBasePath(). You can add multiple paths.
||Note: The OBB archive must be unencrypted and uncompressed for the default Low Level IO to work. If not, you'll need to write your own IO.|
||Note: The OBB reading is done with libzip, please check the license under Libzip. If you do not accept the license, you can disable the use of LibZip by defining the symbol "REMOVE_LIBZIP" in your compilation flag. If so, you'll need to write your own IO hook to read OBB or uncompress the OBB before use.|
The IO system will search for files in the given paths in the reverse order, newest added first, APK content last. This allows for DLC content to replace APK content.
Refer to Low-Level I/O on how to implement the low-level I/O submodule.
The Wwise SDK precompiled libraries come compiled in three flavors:
- armeabi-v7a with hardware-float support (
-mhard-float). The hardware float support libraries are in armeabi-v7a_hf folders. Please link with the appropriate libs according to your usage of the
-mhard-floatflag in your game compilation.