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
+ - NEW: Added option to support the development by donating.
- 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!