/******************************************************************************* * Copyright 2011 See AUTHORS file. * <p/> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.badlogic.gdx.tests.android; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.FileHandleResolver; import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.backends.android.AndroidFiles; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader; import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader; import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.FreeTypeFontLoaderParameter; import com.badlogic.gdx.tests.utils.GdxTest; /* * To use this test, an APK expansion file must be present on the device * run: gradlew tests:gdx-tests-android:uploadOBB * to generate and upload the aforementioned file */ public class APKExpansionTest extends GdxTest { FileHandleResolver resolver; Sound sound; SpriteBatch batch; Texture texture; TextureRegion atlasTextureRegion; AssetManager assetManager; /** The OBB zip assets are taken from the android tests assets directory Extension prefix is prepended to each asset and zipped up into a obb. Extension prefix is required so we can be certain the assets are coming from the obb, while keeping the structure of the assets file tree for easier testing **/ String extensionPrefix = "obbasset-"; @Override public void create () { if ((((AndroidFiles)Gdx.files)).setAPKExpansion(1, 0)) { resolver = new ZipFileHandleResolver(); } else { Gdx.app.error("libgdx", "No Expansion can be opened"); } assetManager = new AssetManager(); FileHandleResolver resolver = new InternalFileHandleResolver(); assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver)); assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver)); loadFont(assetManager, "data/DroidSerif-Regular.ttf", 12); loadFont(assetManager, "data/" + extensionPrefix + "DroidSerif-Regular.ttf", 12); assetManager.load("data/" + extensionPrefix + "testpackobb", TextureAtlas.class); assetManager.finishLoading(); sound = Gdx.audio.newSound(Gdx.files.internal("data/" + extensionPrefix + "chirp.ogg")); sound.play(); texture = new Texture(resolver.resolve("data/" + extensionPrefix + "badlogic.jpg")); batch = new SpriteBatch(); TextureAtlas atlas = assetManager.get("data/" + extensionPrefix + "testpackobb"); atlasTextureRegion = new TextureRegion(atlas.findRegion("water")); sound = Gdx.audio.newSound(Gdx.files.internal("data/shotgun.ogg")); sound.play(); } @Override public void render () { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.begin(); batch.draw(texture, 0, 0); batch.draw(atlasTextureRegion, 0, 0); batch.end(); } private void loadFont(AssetManager assetManager, String fontName, int size) { FreeTypeFontLoaderParameter param = new FreeTypeFontLoaderParameter(); param.fontFileName = fontName; param.fontParameters.size = 12; param.fontParameters.genMipMaps = true; param.fontParameters.minFilter = TextureFilter.MipMapLinearLinear; param.fontParameters.magFilter = TextureFilter.Linear; assetManager.load(fontName + "size" + size + ".ttf", BitmapFont.class, param); } }