本章主要讲解怎么将unity项目导入Androidstudio进行二次开发以及实现开机自启动功能。在这里,Unity进行android开发的对于sdk以及jdk基本设置就不讲解了,直接来看怎么导出项目。
(一)导出项目时,需要注意下图的内容,File–>Build Settings–>Player Settings–>Other Settings
(二)接下来,按照如下图设置,导出项目到指定路径。
(一)首先,打开Android Studio,选择下面的导入方式,将刚刚在Unity编辑器下导出的gradle导入。
(二)
(三)
好了,现在就可以进行真机编译运行了。
开机会发出一个广播,过滤到这个广播就可以做你想干的事情了,开机一般是锁屏状态,还copy了自动解锁屏幕,会有4秒左右的延迟才启动
(一)创建广播类
在java文件夹下的包名文件下新建BootCompletedReceiver类
package com.YSGS.DOUTU; import android.annotation.SuppressLint; import android.app.KeyguardManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.PowerManager; import android.util.Log; public class BootCompletedReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { PowerManager pm=(PowerManager)context.getSystemService(Context.POWER_SERVICE); @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"StartupReceiver"); wl.acquire(); KeyguardManager km=(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE); KeyguardManager.KeyguardLock kl = km.newKeyguardLock("StartupReceiver"); if (intent.getAction().equals(("android.intent.action.BOOT_COMPLETED"))) { Log.e("TAG", "onReceive: 开机启动"); //开机启动 Intent mainIntent = new Intent(context, UnityPlayerActivity.class); //在BroadcastReceiver中显示Activity,必须要设置FLAG_ACTIVITY_NEW_TASK标志 mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(mainIntent); } } }
(二)添加权限和过滤器
在mainifests下的AndroidManifest.xml文件下,在application之前添加
<!--//允许程序禁用键盘锁--> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <!--允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动--> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!--允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失--> <uses-permission android:name="android.permission.WAKE_LOCK" />
注册权限,然后在activity后面添加
<receiver android:enabled="true" android:exported="true" android:name="com.YSGS.DOUTU.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
开机广播过滤。 好了,现在可以真机测试了,如果手机上有装的安全中心等,把打包软件的开机自启动权限打开。