нужно запускать андроид приложение камера при нажатии на кнопку в моем юнити приложении
пожалуйста, мне нужна хоть какая-то обратная связь от более опытных пользователей... вот java класс:
public class LoadCameraPlugin extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
}
}
вот интерфейс:
package com.example.launchcameraplugin;
public interface ILoadCameraPluginCallback
{
void onCreate(Bundle savedInstanceState);
}
вот C# callback код:
public interface ILoadCameraPluginCallback
{
void LaunchCameraApp();
}
public class LoadCameraPluginCallback : AndroidJavaProxy, ILoadCameraPluginCallback
{
public event System.Action launchCameraApp;
public LoadCameraPluginCallback() : base("com.example.launchcameraplugin.ILoadCameraPluginCallback") { }
public void LaunchCameraApp()
{
launchCameraApp?.Invoke();
}
}
вот C# код который вызывает java метод:
public class LoadCameraPlugin : IDisposable
{
private AndroidJavaObject plugin;
private LoadCameraPluginCallback callback;
public LoadCameraPlugin()
{
plugin = new AndroidJavaObject("com.example.launchcameraplugin.LoadCameraPlugin");
callback = new LoadCameraPluginCallback();
}
public void Start()
{
plugin.Call("LaunchCameraApp", callback);
}
public void Dispose()
{
if(plugin != null)
{
plugin.Dispose();
}
plugin = null;
}
}
вот я с помощью кнопки запускаю метод в том скрипте где я вызываю java метод который запускает камеру:
public class StartPluginToLoadCameraByButton : MonoBehaviour
{
public Button button;
public GameObject ButtonOjbect;
private LoadCameraPlugin plugin;
private void Start()
{
plugin = new LoadCameraPlugin();
button = GetComponent<Button>();
button.onClick.AddListener(StartPlugin);
}
public void StartPlugin()
{
plugin.Start();
}
}
я открыл мой апк файл через андроид студио и нашел там файл андроид манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="0.1"
android:installLocation="2"
android:compileSdkVersion="29"
android:compileSdkVersionCodename="10"
package="com.AlexCompany.MyOS"
platformBuildVersionCode="29"
platformBuildVersionName="10">
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="29" />
<supports-screens
android:anyDensity="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true" />
<uses-feature
android:glEsVersion="0x20000" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.VIBRATE" />
<uses-permission
android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.front"
android:required="false" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen.multitouch"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen.multitouch.distinct"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.ar"
android:required="true" />
<uses-feature
android:name="com.google.ar.core.depth"
android:required="true" />
<queries>
<package
android:name="com.google.ar.core" />
</queries>
<application
android:label="@ref/0x7f060005"
android:icon="@ref/0x7f040000"
android:banner="@ref/0x7f010000"
android:isGame="true"
android:extractNativeLibs="true">
<activity
android:theme="@ref/0x7f070001"
android:name="com.unity3d.player.UnityPlayerActivity"
android:launchMode="2"
android:screenOrientation="0"
android:configChanges="0x40003fff"
android:hardwareAccelerated="false">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
<category
android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
<meta-data
android:name="unity.splash-mode"
android:value="0" />
<meta-data
android:name="unity.splash-enable"
android:value="true" />
<meta-data
android:name="unity.build-id"
android:value="faa3eba5-4901-4a5e-8e8f-ed461bf7adc5" />
<meta-data
android:name="unityplayer.SkipPermissionsDialog"
android:value="true" />
<meta-data
android:name="com.google.ar.core"
android:value="required" />
<meta-data
android:name="com.google.ar.core.min_apk_version"
android:value="210210000" />
<activity
android:theme="@ref/0x0103023a"
android:name="com.google.ar.core.InstallActivity"
android:exported="false"
android:excludeFromRecents="true"
android:launchMode="1"
android:configChanges="0x4a0" />
</application>
</manifest>
при нажатии на кнопку ничего не происходит... может есть какая-то ошибка или не логическое действие? правильно ли я работаю с плагином с помощью C# кода? заранее спасибо.