android集成unity项目

    技术2025-02-17  21

    步骤

    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’ } 注意:如果这时候编译报:Error:Failed to resolve: :VuforiaWrapper: 的错误

    解决办法:这个问题是无法解析library里面的aar文件,这个时候只需要在app 里面的build.gradle里面加上这句

    repositories{ flatDir{ dirs 'libs','../ardemo/libs' } }

    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)); }
    Processed: 0.009, SQL: 9