步骤
1、新建项目(已有项目略过)
2、import module,操作如图:
3、File–project structrue,之后按图操作:
4、
5、 在主工程中打开AndroidManifest.xml文件,作如下修改:
(1) 在Manifest根节点添加一个属性:
xmlns:tools ="http://schemas.android.com/tools"
(2) 在Application节点添加一个属性:
tools:replace="android:icon, android:theme"
6、在buid.gradle 中的 defaultConfig项加入
ndk {
abiFilters 'armeabi-v7a'
}
ndk {
abiFilters ‘armeabi-v7a’
}
7、跳转到UnityPlayerActivity
startActivity(new Intent(this, UnityPlayerActivity.class));
附android代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startActivity(new Intent(this, UnityPlayerActivity.class));
}
public static void UntiyCallAndroid(String s){
Log.d("aaaa","被调用1===="+s);
UnityPlayer.UnitySendMessage("_Scripts","AndroidCallUnity","hello UNITY");
Log.d("aaaa","被调用2====:"+ Environment.getExternalStorageDirectory());
// int i= com.secondfury.galleryscreenshot.MainActivity.addImageToGallery(Environment.getExternalStorageDirectory()+"/111.png");
// Log.d("aaaa","被调用3===="+i);
}
public void UntiyCallAndroid(byte[] bytes){
Log.d("aaaa","被调用4===="+"byte长度:"+bytes.length);
// String path1=this.getExternalFilesDir("face")
// FileUtil.saveBitmapToSDcard(Bytes2Bimap(bytes),Environment.getExternalStorageDirectory()+"/face/111.png");
createFileWithByte(bytes);
// UnityPlayer.UnitySendMessage("_Scripts","AndroidCallUnity","hello UNITY");
Log.d("aaaa","被调用5====:"+ Environment.getExternalStorageDirectory());
// int i= com.secondfury.galleryscreenshot.MainActivity.addImageToGallery(Environment.getExternalStorageDirectory()+"/111.png");
// Log.d("aaaa","被调用6===="+i);
}
}
添加zxing依赖
compile 'com.journeyapps:zxing-android-embedded:3.5.0'
给unity调用的接口代码
/**
* 退出
*/
public void ExitUnity (){
finish();
}
/**
* 将字符串生成二维码图片
*
* @param str
* @return
*/
private Bitmap Create2DCode(String str) {
//生成二维矩阵,编码时要指定大小,
//不要生成了图片以后再进行缩放,以防模糊导致识别失败
try {
BitMatrix matrix = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, 200, 200);
int width = matrix.getWidth();
int height = matrix.getHeight();
Log.d("WY+", "宽高为:" + width + "|" + height);
// 二维矩阵转为一维像素数组(一直横着排)
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (matrix.get(x, y)) {
pixels[y * width + x] = 0xff000000;
}else {
pixels[y * width + x] = 0xffffffff;//新加,不然图片都是黑色的
}
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// 通过像素数组生成bitmap, 具体参考api
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
// } catch (WriterException e) {
// e.printStackTrace();
} catch (com.google.zxing.WriterException e) {
e.printStackTrace();
}
return null;
}
/**
* 分享图片(直接将bitamp转换为Uri)
*
* @param bitmap
*/
private void shareImg(Bitmap bitmap) {
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null, null));
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");//设置分享内容的类型
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent = Intent.createChooser(intent, "分享");
startActivity(intent);
}
/**
* 分享二维码图片到微信QQ
* @param url
*/
public void ShareWebGL(String url){
Log.d("WY+","==调用进入1==");
shareImg(Create2DCode(url));
}