Один из подходов всегда заключается в создании интерфейса в вашем основном проекте, назовем его NativeFunctions
.Затем вы позволяете и вашему рабочему столу, и вашему приложению / деятельности Android реализовать этот интерфейс.При создании вашего основного проекта вы передаете приложение / действие.В вашем основном приложении вы сохраняете ссылку на переданный интерфейс и используете ее для вызова собственных функций, которые вы можете реализовать отдельно для настольных компьютеров и Android (не делая вашу игру непригодной для использования на рабочем столе, вы также можете использовать SQLite там;).
Хорошо, это было сложно, поэтому давайте посмотрим на это в действии (определяя функцию для открытия 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.Я думаю, что это также способ интеграции рекламных блоков и общения с системой в целом.