痛苦的开端
在制作的过程中,在unity3D中截图以后,完成了保存到手机的操作,在手机的相应位置可以找到图片,却没法再安卓手机的相册中看到图片,在重启手机后,能够在相册中看见图片,思来想去,应该是安卓系统没有通知相册更新,所以相册不知道有新的图片添加进来了,通过各种寻找终于找到了实现的方法。
在此感谢小杨在玩ios的 Unity3d Android SDK接入解析这个系列的文章,给了我很大的启发,由于对于安卓的开发不是很熟悉,这文章给了我unity3d和安卓通讯的实现提供了实现的可能性;
具体的实现代码如下:
安卓端
public class Test
{
private static Test instance;
private static Context unityContext;
private static Activity unityActivity;
private Test(){}
public static Test GetInstance(Context paramContext)
{
if(instance == null)
instance = new Test();
unityContext = paramContext.getApplicationContext();
unityActivity = (Activity) paramContext;
return instance;
}
public void RefreshPhoto(String fileName)
{
MediaScannerConnection msc=new MediaScannerConnection(unityContext,new MediaScannerConnection.MediaScannerConnectionClient(){
@Override
public void onMediaScannerConnected() {
// TODO Auto-generated method stub
}
@Override
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
}
});
msc.connect();
try {
Thread.sleep(16); // 停顿一帧的时候,让系统有足够的时间完成通知
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
msc.scanFile(fileName, null);
msc.disconnect();
}
}
在AndroidStudio中编写测试完成代码后,发布成jar文件,然后导入到unity中操作,如果和我一样对于安卓不熟悉的可以参考壹米玖坤VR讲师Unity5与Android交互通信(使用Android Studio2.4) 详细操作
c#部分
在unity中把打包的文件放在Pluings->Android->libs下,
AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass tjc = new AndroidJavaClass("com.js.test.test.Test");
AndroidJavaObject jo = tjc.CallStatic<AndroidJavaObject>("GetInstance", ajo);
jo.Call("RefreshPhoto", photoFullName);
通过如上代码调用RefreshPhoto的方法,实现unity通知系统更新相册。
PS:
本人新手一枚,此处留点痕迹,防止日后遗忘之时,可以查看,如果有不妥的地方,还望大佬不吝指教,小弟虚心受之。