2012-03-06 50 views
10

¿Alguien tiene alguna sugerencia sobre el almacenamiento de datos de libGDX en Android en SQLite. Estoy muy familiarizado con las técnicas utilizadas en Android SDK, pero no tengo idea de cómo llamar a esas funciones de la base de datos de Android desde libGDX. Sé que llamar a las funciones de libGDX hará que mi juego no se pueda usar en el escritorio, pero puedo lidiar con eso.Uso de SQLite desde libGDX en Android

Respuesta

12

Un enfoque es siempre crear una interfaz en su proyecto principal, llamémoslo NativeFunctions. Luego, permite que tanto su escritorio como su aplicación/actividad de Android implementen esta interfaz. Al crear su proyecto principal, pasa la aplicación/actividad a lo largo. En su aplicación principal mantiene una referencia a la interfaz aprobada y la usa para llamar a las funciones nativas, que puede implementar para escritorio y Android por separado (sin inutilizar el juego en el escritorio, también puede usar SQLite allí;).

Ok, eso fue complicado, así que vamos a ver en acción (definir una función para abrir una URL):

La interfaz:

public interface NativeFunctions { 
    public void openURL(String url); 
} 

La clase principal:

public class MyGame extends Game/ApplicationListener { 
    public NativeFunctions mNativeFunctions; 

    public MyGame(NativeFunctions nativeFunctions) { 
     mNativeFunctions = nativeFunctions; 
    } 
    // Exemplary function call, of course this doesn't make sense in render() ;) 
    public void render() { 
     mNativeFunctions.openURL("http://www.example.com"); 
    } 
} 

La implementación de Android:

public class MyGameActivity extends AndroidApplication implements NativeFunctions { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initialize(new MyGame(this), false); 
    } 
    public void openURL(String url) { 
     Intent viewIntent = new Intent("android.intent.action.VIEW", 
      Uri.parse(url)); 
     startActivity(viewIntent); 
    } 
} 

La aplicación de escritorio:

public class MyGameDesktop implements NativeFunctions { 
    public static void main(String[] args) { 
     MyGameDesktop game = new MyGameDesktop(); 
     new LwjglApplication(new MyGame(game), "MyGame", 800, 
      480, false); 
    } 
    public void openURL(String url) { 
     // Your implementation to open URL on dekstop 
    } 
} 

Eso es todo, su aplicación a utilizar SQLite probablemente debería ser a lo largo de la misma forma. Por cierto. Creo que esa es también la manera de integrar cuadros de anuncios y de hablar con el sistema en general.

+2

¡Impresionante! Funcionó a la perfección! Este es un buen conocimiento para muchas situaciones. Gracias por la ayuda. Parece que estás respondiendo todas mis preguntas últimamente jaja. –

+2

¡De nada! En realidad, estoy usando LibGDX con bastante frecuencia y como stackoverflow ya ha respondido a muchas de mis preguntas, me alegra devolver algo;). – dom