2012-03-06 29 views
10

Qualcuno ha qualche consiglio su come archiviare dati da libGDX su Android in SQLite. Ho molta familiarità con le tecniche utilizzate nell'SDK di Android ma non ho idea di come chiamare quelle funzioni del database Android da libGDX. So che chiamare le funzioni di libGDX renderà il mio gioco inutilizzabile sul desktop ma posso affrontarlo.Utilizzo di SQLite da libGDX su Android

risposta

12

Un approccio è sempre quello di creare un'interfaccia nel progetto principale, chiamiamolo NativeFunctions. Quindi lascia che sia il desktop sia l'applicazione/attività Android implementino questa interfaccia. Quando crei il tuo progetto principale, passi l'applicazione/l'attività. Nell'applicazione principale si mantiene un riferimento all'interfaccia passata e si utilizza questa funzione per chiamare funzioni native, che è possibile implementare per desktop e Android separatamente (non rendendo inutilizzabile il gioco sul desktop, è possibile utilizzare anche SQLite;).

Ok, che è stato complicato, quindi cerchiamo di vederlo in azione (definizione di una funzione per aprire un URL):

L'interfaccia:

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

La classe principale:

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"); 
    } 
} 

Implementazione 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); 
    } 
} 

L'implementazione del desktop:

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 
    } 
} 

Questo è tutto, l'implementazione di utilizzare SQLite dovrebbe probabilmente essere lungo lo stesso percorso. Btw. Penso che sia anche il modo di integrare i box pubblicitari e di parlare al sistema in generale.

+2

Fantastico! Ha funzionato perfettamente! Questa è una buona conoscenza da avere per molte situazioni. Grazie per l'aiuto. Sembra che tu abbia risposto a tutte le mie domande ultimamente haha. –

+2

Prego! In realtà, sto usando LibGDX abbastanza frequentemente e dato che StackOverflow ha già risposto a molte delle mie domande, sono felice di restituire qualcosa;). – dom