package advent.core; import clojure.lang.RT; import clojure.lang.Symbol; import java.util.ArrayList; import java.util.List; import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.Game; import com.android.billingclient.api.*; import com.android.billingclient.api.BillingClient.BillingResponse; import com.android.billingclient.api.BillingClient.SkuType; import com.android.billingclient.api.SkuDetails.SkuDetailsResult; import com.android.billingclient.api.BillingFlowParams; import com.android.billingclient.api.BillingFlowParams.Builder; public class MainActivity extends AndroidApplication { public boolean triggerPurchase() { BillingFlowParams.Builder builder = new BillingFlowParams.Builder() .setSku("game").setType(SkuType.INAPP); int returnValue = mBillingClient.launchBillingFlow(this, builder.build()); return returnValue == BillingClient.BillingResponse.OK || returnValue == BillingClient.BillingResponse.ITEM_ALREADY_OWNED; } private BillingClient mBillingClient; public void onCreate (android.os.Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { RT.var("clojure.core", "require").invoke(Symbol.intern("clojure.core.async")); RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core")); RT.var("clojure.core", "require").invoke(Symbol.intern("advent.android")); } catch (Exception e) { System.out.println("Importing failed"); e.printStackTrace(); } try { Game game = (Game) RT.var("advent.core", "advent").deref(); System.out.println("pre-init"); initialize(game); System.out.println("before bill??"); mBillingClient = new BillingClient.Builder(this).setListener((PurchasesUpdatedListener) RT.var("advent.android", "listener").deref()).build(); System.out.println("billing??"); mBillingClient.startConnection(new BillingClientStateListener() { @Override public void onBillingSetupFinished(@BillingResponse int billingResponseCode) { System.out.println("billing go"); if (billingResponseCode == BillingResponse.OK) { mBillingClient.queryPurchaseHistoryAsync("inapp", ((PurchaseHistoryResponseListener) RT.var("advent.android", "history-listener").deref())); System.out.println("billing ok"); // The billing client is ready. You can query purchases here. } } @Override public void onBillingServiceDisconnected() { System.out.println("billing disconnect"); // Try to restart the connection on the next request to the // In-app Billing service by calling the startConnection() method. } }); } catch (Exception e) { e.printStackTrace(); } } }