Skip to content

Commit

Permalink
transform java ListArray of String to C list of char* (jni) for activ…
Browse files Browse the repository at this point in the history
…econnections
  • Loading branch information
tshirtman committed Aug 9, 2012
1 parent e3fb2d9 commit bd21d63
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 19 deletions.
61 changes: 45 additions & 16 deletions recipes/android/src/android_jni.c
Expand Up @@ -263,28 +263,28 @@ void android_action_send(char *mimeType, char *filename, char *subject, char *te
cls = (*env)->FindClass(env, "org/renpy/android/Action");
aassert(cls);
mid = (*env)->GetStaticMethodID(env, cls, "send",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
aassert(mid);
}

jstring j_mimeType = (*env)->NewStringUTF(env, mimeType);
jstring j_filename = NULL;
jstring j_subject = NULL;
jstring j_text = NULL;
jstring j_chooser_title = NULL;
if ( filename != NULL )
j_filename = (*env)->NewStringUTF(env, filename);
if ( subject != NULL )
j_subject = (*env)->NewStringUTF(env, subject);
if ( text != NULL )
j_text = (*env)->NewStringUTF(env, text);
if ( chooser_title != NULL )
j_chooser_title = (*env)->NewStringUTF(env, text);
jstring j_mimeType = (*env)->NewStringUTF(env, mimeType);
jstring j_filename = NULL;
jstring j_subject = NULL;
jstring j_text = NULL;
jstring j_chooser_title = NULL;
if ( filename != NULL )
j_filename = (*env)->NewStringUTF(env, filename);
if ( subject != NULL )
j_subject = (*env)->NewStringUTF(env, subject);
if ( text != NULL )
j_text = (*env)->NewStringUTF(env, text);
if ( chooser_title != NULL )
j_chooser_title = (*env)->NewStringUTF(env, text);

(*env)->CallStaticVoidMethod(
env, cls, mid,
j_mimeType, j_filename, j_subject, j_text,
j_chooser_title);
j_mimeType, j_filename, j_subject, j_text,
j_chooser_title);
}

void android_open_url(char *url) {
Expand All @@ -311,3 +311,32 @@ void android_open_url(char *url) {
POP_FRAME;
}

char** bluetooth_active_connections() {
static JNIEnv *env = NULL;
static jclass *cls = NULL;
static jmethodID mid = NULL;
jobjectArray connections;
char** result;
int i;

if (env == NULL) {
env = SDL_ANDROID_GetJNIEnv();
aassert(env);
cls = (*env)->FindClass(env, "org/renpy/android/Bluetooth");
aassert(cls);
mid = (*env)->GetStaticMethodID(env, cls, "activeConnections", "()Ljava/lang/Array;");
aassert(mid);
}

(*env)->CallStaticVoidMethod(
env, cls, mid,
(*env)->NewObjectArray(env, connections)
);

result = (char**) malloc(sizeof(char*) * connections.size);

for (i=0i < connections.size; i++)
result[i] = (*env)->GetStringUTFChars(env, connections[i], 0);

return result;
}
8 changes: 5 additions & 3 deletions src/src/org/renpy/android/bluetooth.java
Expand Up @@ -33,7 +33,9 @@
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Callable;

Expand Down Expand Up @@ -62,11 +64,11 @@ public class Bluetooth {
//});
//}

public Map<String, String> activeConnections() {
Map<String, String> out = new HashMap<String, String>();
static public List<String> activeConnections() {
List<String> out = new ArrayList<String>();
for (Map.Entry<String, BluetoothConnection> entry : connections.entrySet()) {
if (entry.getValue().isConnected()) {
out.put(entry.getKey(), entry.getValue().getRemoteBluetoothAddress());
out.add(entry.getKey());
}
}

Expand Down

0 comments on commit bd21d63

Please sign in to comment.