Unity实战篇:实现安卓手机的复制粘贴功能(与原生Android交互)
16lz
2021-01-26
1.安卓方面的准备和代码编写
准备:必看https://blog.csdn.net/qq_15020543/article/details/82976850(先不要导出aar或jar包)
代码编写:参考自https://blog.csdn.net/mseol/article/details/78518754#commentsedit
在自己的Library新建一个类
package com.li.copy;import android.app.Fragment;import android.content.ClipboardManager;import android.content.Context;import android.content.ClipData;import com.unity3d.player.UnityPlayer;public class MyPluginClass extends Fragment //注意,这里继承的是Fragment。要具体理解可以了解下 Android Activity 的层级结构{ private static final String TAG = "Plugin"; private static MyPluginClass Instance = null; private String gameObjectName; public static MyPluginClass GetInstance(String gameObject) { if(Instance == null) { Instance = new MyPluginClass(); Instance.gameObjectName = gameObject; UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit(); } return Instance; } //拷贝String到剪贴板 public void onClickCopy(String str) { //获取剪贴板管理器: ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); // 创建普通字符型ClipData ClipData mClipData = ClipData.newPlainText("Label", str); //Label是任意文字标签 // 将ClipData内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData); } //粘贴 public String onClickPaste(){ ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); String result = ""; ClipData clipData = cm.getPrimaryClip(); ClipData.Item item = clipData.getItemAt(0); //这里获取第一条,也可以用遍历获取任意条 CharSequence charSequence = item.coerceToText(getActivity().getApplicationContext()); result = charSequence.toString(); return result; }}
根据需求导出aar/jar包,并放在Unity指定位置
2.创建Unity场景
Unity代码
using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class name : MonoBehaviour{ AndroidJavaObject jo = null; public Text text1; public Text text2; void Start() { AndroidJavaClass jc = new AndroidJavaClass("com.li.copy.MyPluginClass"); //和java代码包名统一 jo = jc.CallStatic("GetInstance", gameObject.name); //Main Camera } public void OnCopy() { jo.Call("onClickCopy", text1.text); } public void OnPaste() { text2.text = jo.Call("onClickPaste"); }}
把脚本挂在到Directional Light上
给两个Button绑定方法
打包,真机测试。
总结:我学到了很多,Android环境,导包,通信,第三方SDK的引入。另外针对这个功能我说一下,函数方法都提供好了,只需要在需要用到的地方调用就可以了。参考案例
更多相关文章
- Android(安卓)Studio时间选择器的创建方法
- android中webservce获取soapObject数据的解析问题
- Android(安卓)退出整个程序代码
- Android用canvas画哆啦A梦
- MTK android代码架构
- 编写高效的Android代码(Designing for Performance)
- [Android] Adapter:SimpleAdapter SimpleCursorAdapter ArrayAda
- 安卓基础(十)
- android获取监听SD Card状态的方法