Correct android plugin java code and add information on how to use it from GDScript (#2786)

Correct android plugin java code and add information on how to use it from GDScript
This commit is contained in:
Coleim
2019-09-26 09:57:03 +02:00
committed by Rémi Verschelde
parent fa250b9a9f
commit 31e448e4f9
2 changed files with 22 additions and 3 deletions

View File

@@ -174,6 +174,7 @@ A singleton object template follows:
import android.app.Activity;
import android.content.Intent;
import android.content.Context;
import com.godot.game.R;
import javax.microedition.khronos.opengles.GL10;
@@ -181,11 +182,12 @@ A singleton object template follows:
protected Activity appActivity;
protected Context appContext;
private Godot activity = null;
private int instanceId = 0;
public int myFunction(String p_str) {
public String myFunction(String p_str) {
// A function to bind.
return 1;
return "Hello " + p_str;
}
public void getInstanceId(int pInstanceId) {
@@ -208,7 +210,8 @@ A singleton object template follows:
this.appContext = appActivity.getApplicationContext();
// You might want to try initializing your singleton here, but android
// threads are weird and this runs in another thread, so to interact with Godot you usually have to do.
activity.runOnUiThread(new Runnable() {
this.activity = (Godot)p_activity;
this.activity.runOnUiThread(new Runnable() {
public void run() {
// Useful way to get config info from "project.godot".
String key = GodotLib.getGlobal("plugin/api_key");
@@ -250,6 +253,22 @@ Java will most likely run in a separate thread, so calls are deferred:
Godot will detect this singleton and initialize it at the proper time.
Using it from GDScript
^^^^^^^^^^^^^^^^^^^^^^
First you will need to add your singleton into the android modules to be loaded. Go to "Project > Project Settings".
Then on the tab "General" go to the "Android" section, and fill the Modules part with your module name.
The module should include the full Java path. For our example: ``org/godotengine/godot/MySingleton``.
.. image:: img/android_modules.png
Then, from your script:
.. code:: gdscript
if Engine.has_singleton("MySingleton"):
var singleton = Engine.get_singleton("MySingleton")
print(singleton.myFunction("World"))
Troubleshooting
---------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB