2012-03-06 11 views
10

誰かがAndroid上のlibGDXからのデータをSQLiteに格納するためのヒントを持っていますか?私はAndroid SDKで使用されている技術に精通していますが、libGDXからこれらのAndroidデータベース関数を呼び出す方法はわかりません。私は、libGDXから関数を呼び出すと、自分のゲームをデスクトップ上で使用できなくなることは知っていますが、私はそれに対処できます。AndroidでlibGDXからSQLiteを使用する

答えて

12

1つの方法は、メインプロジェクトに常にインターフェイスを作成することです。NativeFunctionsとしましょう。次に、デスクトップとAndroidアプリケーション/アクティビティの両方にこのインターフェイスを実装させます。メインプロジェクトの作成時に、アプリケーション/アクティビティを渡します。あなたのメインアプリケーションでは、渡されたインターフェイスへの参照を保持し、ネイティブ関数を呼び出すためにこれを使用します。これはデスクトップとAndroid用に個別に実装することができます(ゲームをデスクトップ上で使用できないようにしないでください。

[OK]を、複雑になったこと、それでは(URLを開くための関数を定義する)アクションでそれを見てみましょう:

インタフェース:

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

メインクラス:

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

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

デスクトップの実装:

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

それだ、SQLiteのを使用するように実装は、おそらく同じように沿っている必要があります。 Btw。広告箱を統合して一般的にシステムと話す方法でもあると私は思う。

+2

恐ろしい!完璧に働いた!これは、多くの状況に備えるための良い知識です。助けてくれてありがとう。あなたは最近私の質問にすべて答えているようです。 –

+2

ようこそ。実際には、私はLibGDXをかなり頻繁に使用しています。また、stackoverflowは既に多くの私の質問に答えています。 – dom

関連する問題