Java 在Unity Android插件中访问和使用图像

Java 在Unity Android插件中访问和使用图像,java,c#,android,plugins,unity3d,Java,C#,Android,Plugins,Unity3d,对。。。我以前从来没有用C#或Java写过任何东西,所以我可能在所有这些方面都完全错了,这可能是一个简单的答案,但接下来 我有一个超简单的Unity应用程序,它只需启动一个android插件。该插件需要接受一个文本字符串和一个图像,它将做一种形式的共享 C# 所有这些都可以正常工作,就像我在java类中接收imagePath和消息一样。。。但是,我无法从imagepath获取图像 该图像位于StreamingAssets/meagain.jpg下的Unity项目中。如果我提取生成的apk,我可以

对。。。我以前从来没有用C#或Java写过任何东西,所以我可能在所有这些方面都完全错了,这可能是一个简单的答案,但接下来

我有一个超简单的Unity应用程序,它只需启动一个android插件。该插件需要接受一个文本字符串和一个图像,它将做一种形式的共享

C#

所有这些都可以正常工作,就像我在java类中接收imagePath和消息一样。。。但是,我无法从imagepath获取图像

该图像位于StreamingAssets/meagain.jpg下的Unity项目中。如果我提取生成的apk,我可以看到文件,但我所有的尝试都失败了

有人有什么想法吗

    Texture2D myTex;
string url = "file://"+Application.streamingAssetsPath + "/" + textureName;    
WWW www = new WWW(url );
    myTex = www.texture;

我知道如何从streamignAssets加载内容的唯一方法。

在Android java中,您可以使用

 InputStream in = mContext.getAssets().open("meagain.jpg");
或许

 InputStream in = Plugin.class.getClassLoader().getResourceAsStream("meagain.jpg");
两者都没有经过测试,但值得一试

还做了一些研究:

/* from your subroutine */
Bitmap newBitmap = getBitmapFromAsset(mContext, imagePath);

/* new function to get Bitmap From Asset */
public static Bitmap getBitmapFromAsset(Context context, String imagePath) {
  AssetManager assetManager = context.getAssets();

  InputStream istr;
  Bitmap bitmap = null;
  try {
    istr = assetManager.open(imagePath);
    bitmap = BitmapFactory.decodeStream(istr);
  } catch (IOException e) {
    // handle exception
  }

  return bitmap;
}

另外,请不要忘记位图、AssetManager、InputStream、BitmapFactory和IOException的导入。

您可以使用Application.persistentDataPath+“/”+imageName来代替streamingAssets。@Apollo软件试图验证路径是否错误。。。但还是失败了/storage/simulated/0/Android/data/com.something.something/files/meagain.jpgw提取文件时jpg的确切位置在哪里?路径在哪里?@apollowsoftware APK/assets/meagain.jpg为我返回一个错误:异常:JNI:类型“UnityEngine.Texture2D”(obj=(UnityEngine.Texture2D))实例的未知签名可以仅使用纹理类型而不是纹理2D进行尝试。请尝试一下,看看会发生什么!
 InputStream in = Plugin.class.getClassLoader().getResourceAsStream("meagain.jpg");
/* from your subroutine */
Bitmap newBitmap = getBitmapFromAsset(mContext, imagePath);

/* new function to get Bitmap From Asset */
public static Bitmap getBitmapFromAsset(Context context, String imagePath) {
  AssetManager assetManager = context.getAssets();

  InputStream istr;
  Bitmap bitmap = null;
  try {
    istr = assetManager.open(imagePath);
    bitmap = BitmapFactory.decodeStream(istr);
  } catch (IOException e) {
    // handle exception
  }

  return bitmap;
}