Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_AndroidGetJNIEnv

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_AndroidGetJNIEnv

Użyj tej funkcji, pobrania obiektu natywnego interfejsu Jawy (JNIEnv) bieżącego wątku w aplikacjach dla systemu Android.

Składnia

void* SDL_AndroidGetJNIEnv()

Wartość zwracana

Zwraca wskaźnik do obiektu natywnego interfejsu Jawy (JNIEnv), do którego jest dołączony bieżący wątek, a 0 w przypadku wystąpienia błędu.

Przykładowy kod

#include "SDL.h"
#include <jni.h>

// Ten przykład wymaga C++ oraz niestandardowej metody o nazwie "void showHome()"

// Wywołuje metodę void showHome() egzemplarza aktywności Jawy.
void showHome(void)
{
    // pobierz środowisko JNI.
    JNIEnv* env = (JNIEnv*)SDL_AndroidGetJNIEnv();

    // pobierz egzemplarz SDLActivity
    jobject activity = (jobject)SDL_AndroidGetActivity();

    // znajdź klasę aktywności Jawy. Powinna być klasą SDLActivity lub jej podklasą.
    jclass clazz(env->GetObjectClass(activity));

    // znajdź identyfikator metody do wywołania
    jmethodID method_id = env->GetMethodID(clazz, "showHome", "()V");

    // faktycznie wywołaj metodę Jawy
    env->CallVoidMethod(activity, method_id);

    // wyczyść lokalne odwołania.
    env->DeleteLocalRef(activity);
    env->DeleteLocalRef(clazz);

    // Ostrzeżenie (i dyskusja o szczegółach implementacji SDL w Androidzie):
    // Lokalne odwołania są usuwane automatycznie, gdy kończy działanie natywna
    // funkcja wywołana z Jawy. Dla SDL tą natywną funkcją jest sama main().
    // Dlatego odwołania muszą być ręcznie usunięte, inaczej zostaną usunięte
    // dopiero po powrocie z main() (czyli przy wyjściu z aplikacji).
}

Uwagi

Prototyp funkcji w kodzie SDL w rzeczywistości deklaruje typ wartości zwracanej jako void *, nawet jeśli implementacja zwraca jobject. Powodem jest to, iż nie można dołączyć pliku jni.h do plików nagłówkowych SDL.

Wersja

Funkcja jest dostępna od SDL 2.0.0.

Powiązane funkcje

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2022 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.