AndroidLocator.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.jme3.asset.plugins;
  2. import android.content.res.Resources;
  3. import com.jme3.asset.AssetInfo;
  4. import com.jme3.asset.AssetKey;
  5. import com.jme3.asset.AssetLocator;
  6. import com.jme3.system.JmeSystem;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. public class AndroidLocator implements AssetLocator {
  12. private static final Logger logger = Logger.getLogger(AndroidLocator.class.getName());
  13. private Resources resources;
  14. private android.content.res.AssetManager androidManager;
  15. private String rootPath = "";
  16. private class AndroidAssetInfo extends AssetInfo {
  17. private final InputStream in;
  18. public AndroidAssetInfo(com.jme3.asset.AssetManager manager, AssetKey<?> key, InputStream in)
  19. {
  20. super(manager, key);
  21. this.in = in;
  22. }
  23. @Override
  24. public InputStream openStream() {
  25. return in;
  26. }
  27. }
  28. public AndroidLocator()
  29. {
  30. resources = JmeSystem.getResources();
  31. androidManager = resources.getAssets();
  32. }
  33. public void setRootPath(String rootPath)
  34. {
  35. this.rootPath = rootPath;
  36. }
  37. @SuppressWarnings("rawtypes")
  38. @Override
  39. public AssetInfo locate(com.jme3.asset.AssetManager manager, AssetKey key)
  40. {
  41. InputStream in = null;
  42. String sAssetPath = rootPath + key.getName();
  43. // Fix path issues
  44. if (sAssetPath.startsWith("/"))
  45. {
  46. // Remove leading /
  47. sAssetPath = sAssetPath.substring(1);
  48. }
  49. sAssetPath = sAssetPath.replace("//", "/");
  50. try {
  51. in = androidManager.open(sAssetPath);
  52. if (in == null)
  53. return null;
  54. return new AndroidAssetInfo(manager, key, in);
  55. }
  56. catch (IOException ex)
  57. {
  58. //logger.log(Level.WARNING, "Failed to locate {0} ", sAssetPath);
  59. }
  60. return null;
  61. }
  62. }