Added option to support the development by donating.
This commit is contained in:
parent
5283a0ca7a
commit
d869a87d98
8 changed files with 104 additions and 7 deletions
|
|
@ -101,6 +101,8 @@ dependencies {
|
||||||
|
|
||||||
compile 'com.jakewharton:butterknife:7.0.1'
|
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'
|
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
|
||||||
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
|
<uses-permission android:name="com.android.vending.BILLING" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
<h3>Version 0.9.44 beta2</h3>
|
<h3>Version 0.9.44 beta2</h3>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
|
<li><b>NEW:</b> Added option to support the development by donating.</li>
|
||||||
<li><b>FIX:</b> Fixed status bar coloring for Lollipop and Marshmallow.</li>
|
<li><b>FIX:</b> Fixed status bar coloring for Lollipop and Marshmallow.</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ import io.fabric.sdk.android.Fabric;
|
||||||
public class App extends Application {
|
public class App extends Application {
|
||||||
public static final String TAG = App.class.getSimpleName();
|
public static final String TAG = App.class.getSimpleName();
|
||||||
|
|
||||||
|
public static final String GOOGLE_PLAY_LICENSE_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjMeADN5Ffnt/ml5SYxNPCn8kGcOYGpHEfNSCts99vVxqmCn6C01E94c17j7rUK2aeHur5uxphZylzopPlQ8P8l1fqty0GPUNRSo18FCJzfGH8HZAwZYOcnRFPaXdaq3InyFJhBiODh2oeAcVK/idH6QraQ4r9HIlzigAg6lgwzxl2wJKDh7X/GMdDntCyzDh8xDQ0wIawFgvgojHwqh2Ci8Gnq6EYRwPA9yHiIIksT8Q30QyM5ewl5QcnWepsls7enNqeHarhpmSibRUDgCsxHoOpny7SyuvZvUI3wuLckDR0ds9hrt614scHHqDOBp/qWCZiAgOPVAEQcURbV09qQIDAQAB";
|
||||||
|
|
||||||
private RefWatcher refWatcher;
|
private RefWatcher refWatcher;
|
||||||
|
|
||||||
public static RefWatcher getRefWatcher(Context context) {
|
public static RefWatcher getRefWatcher(Context context) {
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,15 @@ import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.afollestad.materialcab.MaterialCab;
|
import com.afollestad.materialcab.MaterialCab;
|
||||||
|
import com.afollestad.materialdialogs.MaterialDialog;
|
||||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
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.R;
|
||||||
import com.kabouzeid.gramophone.adapter.PagerAdapter;
|
import com.kabouzeid.gramophone.adapter.PagerAdapter;
|
||||||
import com.kabouzeid.gramophone.dialogs.AboutDialog;
|
import com.kabouzeid.gramophone.dialogs.AboutDialog;
|
||||||
|
|
@ -72,7 +78,7 @@ import butterknife.Bind;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
|
||||||
public class MainActivity extends AbsSlidingMusicPanelActivity
|
public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
implements KabViewsDisableAble, CabHolder {
|
implements KabViewsDisableAble, CabHolder, IBillingHandler {
|
||||||
|
|
||||||
public static final String TAG = MainActivity.class.getSimpleName();
|
public static final String TAG = MainActivity.class.getSimpleName();
|
||||||
|
|
||||||
|
|
@ -89,10 +95,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
@Bind(R.id.drawer_layout)
|
@Bind(R.id.drawer_layout)
|
||||||
DrawerLayout drawerLayout;
|
DrawerLayout drawerLayout;
|
||||||
|
|
||||||
private PagerAdapter pagerAdapter;
|
|
||||||
private MaterialCab cab;
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private View navigationDrawerHeader;
|
private View navigationDrawerHeader;
|
||||||
|
private PagerAdapter pagerAdapter;
|
||||||
|
private MaterialCab cab;
|
||||||
|
|
||||||
|
private BillingProcessor billingProcessor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -114,6 +122,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
setNavigationBarThemeColor();
|
setNavigationBarThemeColor();
|
||||||
setStatusBarThemeColor();
|
setStatusBarThemeColor();
|
||||||
|
|
||||||
|
billingProcessor = new BillingProcessor(this, App.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||||
|
|
||||||
checkChangelog();
|
checkChangelog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -232,6 +242,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
menuItem.setChecked(true);
|
menuItem.setChecked(true);
|
||||||
pager.setCurrentItem(PagerAdapter.MusicFragments.PLAYLIST.ordinal(), true);
|
pager.setCurrentItem(PagerAdapter.MusicFragments.PLAYLIST.ordinal(), true);
|
||||||
break;
|
break;
|
||||||
|
case R.id.support_development:
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
showDonationDialog();
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
|
break;
|
||||||
case R.id.nav_settings:
|
case R.id.nav_settings:
|
||||||
new Handler().postDelayed(new Runnable() {
|
new Handler().postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -588,4 +606,54 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
e.printStackTrace();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -25,6 +25,10 @@
|
||||||
<group
|
<group
|
||||||
android:id="@+id/navigation_drawer_menu_category_other"
|
android:id="@+id/navigation_drawer_menu_category_other"
|
||||||
android:checkableBehavior="none">
|
android:checkableBehavior="none">
|
||||||
|
<item
|
||||||
|
android:id="@+id/support_development"
|
||||||
|
android:icon="@drawable/ic_favorite_white_24dp"
|
||||||
|
android:title="@string/support_development" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/nav_settings"
|
android:id="@+id/nav_settings"
|
||||||
android:icon="@drawable/ic_settings_white_24dp"
|
android:icon="@drawable/ic_settings_white_24dp"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,24 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Phonograph</string>
|
<string name="app_name" translatable="false">Phonograph</string>
|
||||||
<string name="credits_4">\u0020<a href="http://cookicons.co/">Cookicons</a></string>
|
<string name="credits_4" translatable="false">\u0020<a href="http://cookicons.co/">Cookicons</a></string>
|
||||||
<string name="credits_2">\u0020<b>Karim Abou Zeid</b>.\n<a href="https://plus.google.com/+KarimAbouZeid23697">Google+</a>   <a href="https://twitter.com/karim23697">Twitter</a>\n\n</string>
|
<string name="credits_2" translatable="false">\u0020<b>Karim Abou Zeid</b>.\n<a href="https://plus.google.com/+KarimAbouZeid23697">Google+</a>   <a href="https://twitter.com/karim23697">Twitter</a>\n\n</string>
|
||||||
<string name="special_thanks_names">\u0020<a href="https://google.com/+AidanFollestad">Aidan Follestad</a>\n\n</string>
|
<string name="special_thanks_names" translatable="false">\u0020<a href="https://google.com/+AidanFollestad">Aidan Follestad</a>\n\n</string>
|
||||||
|
|
||||||
|
<string-array name="donation_names" translatable="false">
|
||||||
|
<item>$1.00</item>
|
||||||
|
<item>$3.00</item>
|
||||||
|
<item>$5.00</item>
|
||||||
|
<item>$10.00</item>
|
||||||
|
<item>$15.00</item>
|
||||||
|
<item>$20.00</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="donation_ids" translatable="false">
|
||||||
|
<item>donation_1</item>
|
||||||
|
<item>donation_3</item>
|
||||||
|
<item>donation_5</item>
|
||||||
|
<item>donation_10</item>
|
||||||
|
<item>donation_15</item>
|
||||||
|
<item>donation_20</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -175,4 +175,6 @@
|
||||||
<string name="changelog">Changelog</string>
|
<string name="changelog">Changelog</string>
|
||||||
<string name="permission_to_access_external_storage_denied">Permission to access external storage denied.</string>
|
<string name="permission_to_access_external_storage_denied">Permission to access external storage denied.</string>
|
||||||
<string name="back">back</string>
|
<string name="back">back</string>
|
||||||
|
<string name="support_development">Support development</string>
|
||||||
|
<string name="thank_you">Thank you!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue