2018-06-01 后面由于要接入微信登录/支付、支付宝支付这些东西,原来在MainActivity中实现这些逻辑明显不太好了,于是将这个类重新整理了一下,方便后续添加其他接口
GitHub地址: https://github.com/alexchenc/unityplugins
前段时间需要做一个头像上传功能,参考了一些资料后总算是弄了出来。
首先感谢其他博主们的分享:
Unity3D研究院之打开照相机与本地相册进行裁剪显示(三十三)
Unity3d本地上传并且裁剪图片—–Android平台
1. 新建安卓项目
- 新建一个Android项目,我这里用的是Idea(Eclipse的安卓插件一直弄不好然后放弃了),第一次建要好长时间下载插件,耐心等一下。
Application name: 自己随意命名一个。
Company Domain: 也是自己命名。
Package name: 点击右边Edit,自己修改包名。此处包名需要和Unity项目中打包的包名相同
这是Unity项目中的设置。包名与AndroidAPI版本
下一步,选择最低版本API。版本越低兼容越好,这里我选的是4.1,与Unity中保持的一致。
- 下一步,创建Activity。只需要创建一个空的Activity即可,选择EmptyActivity。
- 这个Activity就命名为MainActivity吧,勾选“Generate Layout File”,生成Layout文件;
- 不用勾选下面那个框,点击Finish创建完成。
2. Unity环境集成
- 首先需要把Unity的jar包拷贝过来,放在libs目录下。jar包在Unity软件目录下找:
/Applications/Unity/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar
- 如果找不到就用Spotlight搜索 classes.jar,去与Unity有关的路径查找。
将jar包拷贝至libs目录下,右键->Add as Library, 确定,导入jar包。
3. 打开相册和相机,裁剪功能实现
- 让MainActivity继承自UnityPlayerActivity(从Unity导入的jar包中包含的类)
- 这个MainActivity将作为App启动的第一个Activity
- 由于后期可能需要接入多个Api,所以只把这里当做一个Controller,具体逻辑放在各自的类中实现。这里我将相机、相册逻辑放在PhotoService.java中。
- MainActivity.java代码如下:
package com.cclovers.demo;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
public static final String UNITY_GAMEOBJECT = "AndroidManager";
public static MainActivity Instance;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//直接打包apk时需要设置下面这一行
// setContentView(R.layout.activity_main);
Instance = this;
}
/**
* 调用相机
*/
public void openCamera() {
PhotoService.GetInstance().openCamera();
}
/**
* 调用相册
*/
public void openAlbum() {
PhotoService.GetInstance().openAlbum();
}
/**
* 调用支付宝API
*/
public void openAlipay(String orderStr) {
}
/**
* 调用微信API
*/
public void openWechat() {
}
/**
* 微信登录接口
*/
public void openWechatLogin() {
}
/**
* 回调
* @param