Convert JNI-called functions to object methods.

This commit is contained in:
Miku AuahDark
2022-05-28 13:52:44 +08:00
parent 72cb021a49
commit 2639b8fb63
2 changed files with 56 additions and 8 deletions
@@ -21,6 +21,7 @@
package org.love2d.android;
import androidx.annotation.Keep;
import androidx.core.app.ActivityCompat;
import org.libsdl.app.SDLActivity;
@@ -52,9 +53,11 @@ import java.util.Map;
public class GameActivity extends SDLActivity {
private static final String TAG = "GameActivity";
public static final int RECORD_AUDIO_REQUEST_CODE = 3;
protected Vibrator vibrator;
protected boolean shortEdgesMode;
protected final int[] recordAudioRequestDummy = new int[1];
private int delayedFd = -1;
private String[] args = new String[0];
private boolean isFused;
@@ -142,9 +145,27 @@ public class GameActivity extends SDLActivity {
super.onPause();
}
@Keep
public static DisplayMetrics getDisplayMetrics() {
return getDisplayDPI();
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (grantResults.length > 0) {
Log.d("GameActivity", "Received a request permission result");
if (requestCode == RECORD_AUDIO_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("GameActivity", "Mic permission granted");
} else {
Log.d("GameActivity", "Did not get mic permission.");
}
Log.d("GameActivity", "Unlocking LÖVE thread");
synchronized (recordAudioRequestDummy) {
recordAudioRequestDummy[0] = grantResults[0];
recordAudioRequestDummy.notify();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
@Keep
@@ -190,7 +211,7 @@ public class GameActivity extends SDLActivity {
}
@Keep
public static boolean openURLFromLOVE(String url) {
public boolean openURLFromLOVE(String url) {
Log.d(TAG, "opening url = " + url);
return openURL(url) == 0;
}
@@ -277,6 +298,33 @@ public class GameActivity extends SDLActivity {
return shortEdgesMode;
}
@Keep
public boolean hasRecordAudioPermission() {
return ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
}
@Keep
public void requestRecordAudioPermission() {
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.RECORD_AUDIO)
== PackageManager.PERMISSION_GRANTED) {
return;
}
Log.d("GameActivity", "Requesting mic permission and locking LÖVE thread until we have an answer.");
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECORD_AUDIO},
RECORD_AUDIO_REQUEST_CODE);
synchronized (recordAudioRequestDummy) {
try {
recordAudioRequestDummy.wait();
} catch (InterruptedException e) {
Log.d("GameActivity", "requesting mic permission", e);
}
}
}
public int getAudioSMP() {
int smp = 256;
AudioManager a = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
@@ -329,8 +377,8 @@ public class GameActivity extends SDLActivity {
// Send it as dropped file later
delayedFd = convertToFileDescriptor(game);
} else {
// Process to GameInfo
processOpenGame(intent, game);
// Process for arguments
processOpenGame(game);
}
} else {
// Game is already running. Send it as dropped file.
@@ -390,7 +438,7 @@ public class GameActivity extends SDLActivity {
return -1;
}
private void processOpenGame(Intent intent, Uri game) {
private void processOpenGame(Uri game) {
String scheme = game.getScheme();
String path = game.getPath();