diff --git a/app/build.gradle b/app/build.gradle index e326d70a..8e413197 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -101,6 +101,8 @@ dependencies { compile 'com.jakewharton:butterknife:7.0.1' + compile 'com.anjlab.android.iab.v3:library:1.0.26' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fae6ce26..12899427 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + Version 0.9.44 beta2
    +
  1. NEW: Added option to support the development by donating.
  2. FIX: Fixed status bar coloring for Lollipop and Marshmallow.
diff --git a/app/src/main/java/com/kabouzeid/gramophone/App.java b/app/src/main/java/com/kabouzeid/gramophone/App.java index 057367ec..9ba9ad1c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/App.java +++ b/app/src/main/java/com/kabouzeid/gramophone/App.java @@ -19,6 +19,8 @@ import io.fabric.sdk.android.Fabric; public class App extends Application { public static final String TAG = App.class.getSimpleName(); + public static final String GOOGLE_PLAY_LICENSE_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjMeADN5Ffnt/ml5SYxNPCn8kGcOYGpHEfNSCts99vVxqmCn6C01E94c17j7rUK2aeHur5uxphZylzopPlQ8P8l1fqty0GPUNRSo18FCJzfGH8HZAwZYOcnRFPaXdaq3InyFJhBiODh2oeAcVK/idH6QraQ4r9HIlzigAg6lgwzxl2wJKDh7X/GMdDntCyzDh8xDQ0wIawFgvgojHwqh2Ci8Gnq6EYRwPA9yHiIIksT8Q30QyM5ewl5QcnWepsls7enNqeHarhpmSibRUDgCsxHoOpny7SyuvZvUI3wuLckDR0ds9hrt614scHHqDOBp/qWCZiAgOPVAEQcURbV09qQIDAQAB"; + private RefWatcher refWatcher; public static RefWatcher getRefWatcher(Context context) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index ae459134..d4073a80 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -33,9 +33,15 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.afollestad.materialcab.MaterialCab; +import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.ThemeSingleton; +import com.anjlab.android.iab.v3.BillingProcessor; +import com.anjlab.android.iab.v3.BillingProcessor.IBillingHandler; +import com.anjlab.android.iab.v3.TransactionDetails; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.PagerAdapter; import com.kabouzeid.gramophone.dialogs.AboutDialog; @@ -72,7 +78,7 @@ import butterknife.Bind; import butterknife.ButterKnife; public class MainActivity extends AbsSlidingMusicPanelActivity - implements KabViewsDisableAble, CabHolder { + implements KabViewsDisableAble, CabHolder, IBillingHandler { public static final String TAG = MainActivity.class.getSimpleName(); @@ -89,10 +95,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @Bind(R.id.drawer_layout) DrawerLayout drawerLayout; - private PagerAdapter pagerAdapter; - private MaterialCab cab; @Nullable private View navigationDrawerHeader; + private PagerAdapter pagerAdapter; + private MaterialCab cab; + + private BillingProcessor billingProcessor; @Override protected void onCreate(Bundle savedInstanceState) { @@ -114,6 +122,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity setNavigationBarThemeColor(); setStatusBarThemeColor(); + billingProcessor = new BillingProcessor(this, App.GOOGLE_PLAY_LICENSE_KEY, this); + checkChangelog(); } @@ -232,6 +242,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity menuItem.setChecked(true); pager.setCurrentItem(PagerAdapter.MusicFragments.PLAYLIST.ordinal(), true); break; + case R.id.support_development: + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + showDonationDialog(); + } + }, 200); + break; case R.id.nav_settings: new Handler().postDelayed(new Runnable() { @Override @@ -588,4 +606,54 @@ public class MainActivity extends AbsSlidingMusicPanelActivity e.printStackTrace(); } } + + private void showDonationDialog() { + new MaterialDialog.Builder(this) + .title(R.string.support_development) + .items(R.array.donation_names) + .itemsCallback(new MaterialDialog.ListCallback() { + @Override + public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { + final String[] ids = getResources().getStringArray(R.array.donation_ids); + billingProcessor.purchase(MainActivity.this, ids[i]); + } + }).show(); + } + + @Override + public void onProductPurchased(String productId, TransactionDetails details) { + billingProcessor.consumePurchase(productId); + Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onPurchaseHistoryRestored() { + // ignore + } + + @Override + public void onBillingError(int errorCode, Throwable error) { + Toast.makeText(this, "Billing error: code = " + errorCode + ", error: " + + (error != null ? error.getMessage() : "?"), Toast.LENGTH_LONG).show(); + } + + @Override + public void onBillingInitialized() { + // ignore + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) { + super.onActivityResult(requestCode, resultCode, data); + } + } + + @Override + protected void onDestroy() { + if (billingProcessor != null) { + billingProcessor.release(); + } + super.onDestroy(); + } } \ No newline at end of file diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml index 46545c61..5b689127 100644 --- a/app/src/main/res/menu/menu_drawer.xml +++ b/app/src/main/res/menu/menu_drawer.xml @@ -25,6 +25,10 @@ + - Phonograph - \u0020Cookicons - \u0020Karim Abou Zeid.\nGoogle+   Twitter\n\n - \u0020Aidan Follestad\n\n + Phonograph + \u0020Cookicons + \u0020Karim Abou Zeid.\nGoogle+   Twitter\n\n + \u0020Aidan Follestad\n\n + + + $1.00 + $3.00 + $5.00 + $10.00 + $15.00 + $20.00 + + + donation_1 + donation_3 + donation_5 + donation_10 + donation_15 + donation_20 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 318da8b3..dd229897 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -175,4 +175,6 @@ Changelog Permission to access external storage denied. back + Support development + Thank you!