これはテストされていませんが、これを試すことができます。
基本的に、Android SDK に直接アクセスしようとしますが、Unity にはこれを可能にするいくつかのクラスがあります。
外部 Java クラスを作成して、Plugins/Android フォルダーに配置してみてください。
Javaクラスメソッドは次のようなものかもしれません:この質問から参照され、.jarファイルにコンパイルされて
いることを確認してください
package com.yourcompany.yourgamename;
import com.unity3d.player.UnityPlayerActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Config;
import android.util.Log;
import android.app.Activity;
public class MainActivity extends UnityPlayerActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
public static void lockScreen()
{
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.reenableKeyguard();
}
}
また、これが Android マニフェスト ファイルにあることを確認して、Unity がメインのアクティビティの代わりにこのアクティビティをロードし、\Plugins\Android フォルダーに配置するようにします。
<?xml version="1.0" encoding="utf-8"?>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
次に、外部 Java クラスを呼び出す Unity C# スクリプトを作成します。
public static void InvokeAndroidLockScreen()
{
#if UNITY_ANDROID
using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
obj_Activity .CallStatic("lockScreen");
}
}
#else
Debug.LogWarning("Cant invoke lockscreen on a non Android Device");
#endif
}
最後に、アクティブな単一動作で、アプリケーションの一時停止イベントでロック画面を呼び出します:ここで参照
void OnApplicationPause(bool pauseStatus)
{
InvokeAndroidLockScreen();
}
次のフラグが false に設定されていることを確認する必要があります
Application.runInBackground = false;
そうしないと、デバイスの電源がオフになったときに一時停止イベントがトリガーされないと思います。(デフォルトではオフになっています)
これが回避策であるとしても、これは Unity のバグであり、彼らに報告する必要があると思います。