社会化分享功能对于任何软件来说都至关重要,今天来介绍一种基于安卓的社会化分享功能实现。
首先,我们制作一个分享界面,其实就是一个预先用PS做好的全屏大图。
SharePanel
然后,我们新建一个Share脚本,用来实现社会化分享功能。具体步骤如下:
- 写一个点击事件作为功能的入口,当点击分享按钮后执行功能。
public void ShareBtnPress()
{
if (!isProcessing) //避免重复点击分享按钮生效
{
CanvasShareObj.SetActive(true);
StartCoroutine(ShareScreenshot());
}
}
- 接下来我们截屏。这里就用到了u3d预留的ScreenCapture.CaptureScreenshot(),这个api提供截图应用内截图功能,有两个可选参数:string filename(文件名) ; int superSize = 1(分辨率放大倍数)。这个api会将接下来的图片存放在相应平台的持久化路径下。
所以,我们要通过
Path.Combine(Application.persistentDataPath, "screenshot.png");
来获取它。
- 底部弹出分享popwindow。有写过安卓应用程序的应该对popwindow不陌生。unity预留了一些对应安卓的api(例如:AndroidInput , AndroidJavaClass , AndroidJavaObject等等,可翻阅官方文档)。以下代码,明显的,中文处是可替代的。
if (Application.platform == RuntimePlatform.Android)
{
AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + destination1);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"),
uriObject);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"),
"中国传统文化普及引用《孔方》上架啦,欢迎前往酷安应用市场下载。");
intentObject.Call<AndroidJavaObject>("setType", "image/jpeg");
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject chooser = intentClass.CallStatic<AndroidJavaObject>("createChooser",
intentObject, "感谢分享");
currentActivity.Call("startActivity", chooser);
yield return new WaitForSeconds(1f); //WaitForSecondsRealtime(1f);
}
网友评论