From f3c629e1c62d68a0927ccdca1dd1c9e80a4e0fcf Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Tue, 10 Mar 2015 17:22:35 +0100 Subject: [PATCH] New Drawables and widget alpha --- app/src/main/AndroidManifest.xml | 32 ++++-- .../gramophone/widget/MusicPlayerWidget.java | 104 ++++++++++++++++++ .../res/drawable-hdpi/ic_pause_black_36dp.png | Bin 0 -> 230 bytes .../ic_play_arrow_black_36dp.png | Bin 0 -> 328 bytes .../drawable-hdpi/ic_skip_next_black_36dp.png | Bin 0 -> 336 bytes .../ic_skip_previous_black_36dp.png | Bin 0 -> 363 bytes .../res/drawable-mdpi/ic_pause_black_36dp.png | Bin 0 -> 195 bytes .../ic_play_arrow_black_36dp.png | Bin 0 -> 278 bytes .../drawable-mdpi/ic_skip_next_black_36dp.png | Bin 0 -> 265 bytes .../ic_skip_previous_black_36dp.png | Bin 0 -> 277 bytes .../example_appwidget_preview.png | Bin 0 -> 3522 bytes .../drawable-xhdpi/ic_pause_black_36dp.png | Bin 0 -> 207 bytes .../ic_play_arrow_black_36dp.png | Bin 0 -> 373 bytes .../ic_skip_next_black_36dp.png | Bin 0 -> 375 bytes .../ic_skip_previous_black_36dp.png | Bin 0 -> 404 bytes .../drawable-xxhdpi/ic_pause_black_36dp.png | Bin 0 -> 257 bytes .../ic_play_arrow_black_36dp.png | Bin 0 -> 497 bytes .../ic_skip_next_black_36dp.png | Bin 0 -> 477 bytes .../ic_skip_previous_black_36dp.png | Bin 0 -> 509 bytes .../drawable-xxxhdpi/ic_pause_black_36dp.png | Bin 0 -> 298 bytes .../ic_play_arrow_black_36dp.png | Bin 0 -> 594 bytes .../ic_skip_next_black_36dp.png | Bin 0 -> 592 bytes .../ic_skip_previous_black_36dp.png | Bin 0 -> 591 bytes .../main/res/layout/music_player_widget.xml | 69 ++++++++++++ app/src/main/res/values-v14/dimens.xml | 10 ++ app/src/main/res/values/dimens.xml | 7 ++ .../main/res/xml/music_player_widget_info.xml | 11 ++ 27 files changed, 222 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/widget/MusicPlayerWidget.java create mode 100644 app/src/main/res/drawable-hdpi/ic_pause_black_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_play_arrow_black_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_skip_next_black_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_skip_previous_black_36dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_pause_black_36dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_play_arrow_black_36dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_skip_next_black_36dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_skip_previous_black_36dp.png create mode 100644 app/src/main/res/drawable-nodpi/example_appwidget_preview.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_pause_black_36dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_play_arrow_black_36dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_skip_next_black_36dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_skip_previous_black_36dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_pause_black_36dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_play_arrow_black_36dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_skip_next_black_36dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_skip_previous_black_36dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_pause_black_36dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_play_arrow_black_36dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_skip_next_black_36dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_skip_previous_black_36dp.png create mode 100644 app/src/main/res/layout/music_player_widget.xml create mode 100644 app/src/main/res/values-v14/dimens.xml create mode 100644 app/src/main/res/xml/music_player_widget_info.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ee756d26..40f993f2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,13 +9,13 @@ @@ -23,21 +23,21 @@ - + - + + android:name=".ui.activities.MusicControllerActivity" + android:parentActivityName=".ui.activities.MainActivity" > - + @@ -48,18 +48,28 @@ android:value="b23725bd3d266aa65c5a3dd1816b2f801524a189" /> + + + + + + + + diff --git a/app/src/main/java/com/kabouzeid/gramophone/widget/MusicPlayerWidget.java b/app/src/main/java/com/kabouzeid/gramophone/widget/MusicPlayerWidget.java new file mode 100644 index 00000000..f4782176 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/widget/MusicPlayerWidget.java @@ -0,0 +1,104 @@ +package com.kabouzeid.gramophone.widget; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.widget.RemoteViews; + +import com.kabouzeid.gramophone.App; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.service.MusicService; +import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; +import com.kabouzeid.gramophone.util.MusicUtil; +import com.nostra13.universalimageloader.core.ImageLoader; + +/** + * Implementation of App Widget functionality. + */ +public class MusicPlayerWidget extends AppWidgetProvider { + private static MusicPlayerWidget instance; + + public static synchronized MusicPlayerWidget getInstance() { + if (instance == null) { + instance = new MusicPlayerWidget(); + } + return instance; + } + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.music_player_widget); + + appWidgetManager.updateAppWidget(appWidgetIds, views); + } + + + @Override + public void onEnabled(Context context) { + // Enter relevant functionality for when the first widget is created + } + + @Override + public void onDisabled(Context context) { + // Enter relevant functionality for when the last widget is disabled + } + + private void linkButtons(final Context context, final RemoteViews views) { + views.setOnClickPendingIntent(R.id.album_art, retrievePlaybackActions(context, 0)); + views.setOnClickPendingIntent(R.id.button_toggle_play_pause, retrievePlaybackActions(context, 1)); + views.setOnClickPendingIntent(R.id.button_next, retrievePlaybackActions(context, 2)); + views.setOnClickPendingIntent(R.id.button_prev, retrievePlaybackActions(context, 3)); + } + + private PendingIntent retrievePlaybackActions(final Context context, final int which) { + Intent action; + PendingIntent pendingIntent; + final ComponentName serviceName = new ComponentName(context, MusicService.class); + switch (which) { + case 0: + action = new Intent(context, MusicControllerActivity.class); + pendingIntent = PendingIntent.getActivity(context, 0, action, 0); + return pendingIntent; + case 1: + action = new Intent(MusicService.ACTION_TOGGLE_PLAYBACK); + action.setComponent(serviceName); + pendingIntent = PendingIntent.getService(context, 1, action, 0); + return pendingIntent; + case 2: + action = new Intent(MusicService.ACTION_SKIP); + action.setComponent(serviceName); + pendingIntent = PendingIntent.getService(context, 2, action, 0); + return pendingIntent; + case 3: + action = new Intent(MusicService.ACTION_REWIND); + action.setComponent(serviceName); + pendingIntent = PendingIntent.getService(context, 3, action, 0); + return pendingIntent; + } + return null; + } + + public void performUpdate(final MusicService service, final Song song){ + final RemoteViews views = new RemoteViews(service.getPackageName(), R.layout.music_player_widget); + linkButtons(service, views); + loadAlbumArt(views, MusicUtil.getAlbumArtUri(song.albumId).toString()); + views.setTextViewText(R.id.song_title, song.title); + } + + private static void loadAlbumArt(RemoteViews widgetView, String albumArtUri) { + Bitmap albumArtBitmap = ImageLoader.getInstance().loadImageSync(albumArtUri); + if (albumArtBitmap == null) { + widgetView.setImageViewResource(R.id.album_art, R.drawable.default_album_art); + } else { + widgetView.setImageViewBitmap(R.id.album_art, albumArtBitmap); + } + } +} + + diff --git a/app/src/main/res/drawable-hdpi/ic_pause_black_36dp.png b/app/src/main/res/drawable-hdpi/ic_pause_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1f8e767a6345507b8d4ef6a921e42f2536bb44 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yU@!w=4i*Lm1~s2WVGIlm3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228K9K7srr@!*8!|IR=oJwM~lpx e6PMiE#V}8WyCvc6h7$}73=E#GelF{r5}E)8h)RqA literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_play_arrow_black_36dp.png b/app/src/main/res/drawable-hdpi/ic_play_arrow_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a39ac1cc51e0752f16db3a947870a1d8b865edf4 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0y~yU@!w=4i*Lm1~s2WVGIlm3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228IKkE{-7)hu=|(pL zx!iYuq37L=UuDAi&#h~|@vWOvqEd5BX)O04H#^?!nDCtsCiWlJ>ZxJl=YBm|bMncQ cx_RPiFIoc3CjDq-U|?YIboFyt=akR{06k%KUjP6A literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_skip_next_black_36dp.png b/app/src/main/res/drawable-hdpi/ic_skip_next_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..cce0a322ccbbe6491b050b62814d9f79fa5fe3e6 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0y~yU@!w=4i*Lm1~s2WVGIlm3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228I)!E{-7)hu=;!H!fa2>1d4P%amiyTm8g}(-usYEPrM- zGjP9_&{UmgwzjOBd{kH8Ts<%FhJt$NYi|3kIWeJ2Ryocw4%I#1oK-2N^Z(rg&6_Ly ncKVbr@j9P>yimsdfbhj@RpC7@kKZsbFfe$!`njxgN@xNAtX6*7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_skip_previous_black_36dp.png b/app/src/main/res/drawable-hdpi/ic_skip_previous_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..27ebe3e5a76bad19c26fa34b424a693bc4c4f806 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0y~yU@!w=4i*Lm1~s2WVGIlm3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228PF;E{-7)hu>aX%X`Q{qT%88g`U2$e9^53nhzT=3LjwE;26oE*1#LV zz_x;&Td4Dp0*C7t^_KZTx9*91?EC&k_54!L_jVUdd@t8+)2rL_DgCle+s~Gdr)Il< zxO&km!P&1xC}M8vp6eFZ9#42@+GTlW$1>~QB;9T06CBSZo%z{l)M6T8@7T7%?)dbO zr!!7J;tjF9mN?%rwBx4Fj+CIOiE;x{no9XD#IqG zyt3P(GRdq+!op{%od3g(4mA%tr966zmbPC}dR)Ht#gDa_vzBp|Fn7GD%6n;YX$1oV O1B0ilpUXO@geCwM^osHT literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_pause_black_36dp.png b/app/src/main/res/drawable-mdpi/ic_pause_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2403aa5ee95719de7c9d0a022b2b844473166038 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^{I_`W|MBJHF1qV`rA)FetZ-b+ t)+^P*y&*v``^ds=6B9*xnBFijaD8Ldckq2x$H2hA;OXk;vd$@?2>`>(HIe`T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_play_arrow_black_36dp.png b/app/src/main/res/drawable-mdpi/ic_play_arrow_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f8803e5436168fec8864c24470f5f6eff4bc1e2a GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^bP0l+XkKTN+&b literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_skip_next_black_36dp.png b/app/src/main/res/drawable-mdpi/ic_skip_next_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf4f541c89d835d4487b8e4d03f6f04ed778e5d GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^~S$}<7wU@u`F4_sm<{ikNE~E=S_}o zJl9ty3!KQlydqhEqas*&!%C^Y0uwxYSv;@mFrD1;_R5JZ0txQDNi1O-bY*q_x*t?v aXSjHFg(Bx;&OinR1_n=8KbLh*2~7Z^^j2j6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/example_appwidget_preview.png b/app/src/main/res/drawable-nodpi/example_appwidget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..894b069a4907d258f60b1b2406b90f5a0fe1c35b GIT binary patch literal 3522 zcmeAS@N?(olHy`uVBq!ia0y~yVEE3!z~I2a%)r3#ajxJR1_lPn64!{5;QX|b^2DN4 z2FH~Aq*MjZ+{EB@w}FfdWj%4dKI|^3?N`*Ur~^l zoSj;tkd&I9nP;o?e)oPQh0GLNrEpVU1K$GY)Qn7zs-o23D!-8As_bOT6eW8*1)B=1 zirj+S)RIJnirk#MVyg;UC9t_xdBs*BVSOb9u#%E&TP292B76fBob!uP6-@Pvb(0MY z4HeAH^bAc*&CCpS6pRcEjr0wS^bO2(4Na^}&8&>f6`(-LPQj)qCCw_x#SLm#QA(Pv zQbtKhft9{~d3m{Bxv^e;QM$gNrKKgv3?n1mqLeh<;>x^|#0uTKVr7^KE~&-IMVSR9 znfZANAQKal@=Hr>m6V{yR^%4Ijm;~D22*l=u6{*gfxe-h0mw@bzvdSB`r=obn+sQ6 zToROua4%Mai$f|4QuTvUi}Op1l2e0H)09DODzI`cN=+=uFAB-e&w+(vKt_H^esM;A zfr4|enSzFIVsd64NI(;;!`Ii!Gq1QLF)umQ)5TV)BDX*-xZPrk(>$o&6x?nx!>L!_PQgYW6tzfE4HF7-aRV{IsS=bz?GzA6KQ%AK zR;ftI-p+mQacu?$#&ZEaA+8LouKoZ2f6L=f|Ni|?Kk@YMzkg4^{`&X-|KETAb+_O7 z^Yg)gh{rmg(AH%9^46Cj^`SOcl&2@%V*BMq_fB*je z_n%?yb-Ar~y!Sr@DPDEG@YvIWqfh0w-ZtKO*KO~8we`2Mk34zu<)_HzTT8CLz4!4a z_u89QyYK04xMjWNj{nXFTke1O^$+C!>Qm4C4?aBi^4qV!|1P}wcIw5~JMVvb?6^PS z;wy$#*Yl1(G1+|Q{>PsTtF9@ozvZ&!PQ#fOAAbG4{o%*f`yZY6KDht+C-<5g=DY7Q ztiIlG>iMSoA2SX<-umd%yYGMg{QGy}#aGv@cY9B~`u*qMjH_=NPd)$m^Y78;U#`6Q zcJ}#KolSQhe);+9&%eGi&$ZUy$~g3daqSI;)z=Mn+zHwJ;P!`~46Ckx`1SYV%Wn~T zA2O`Ee(d4rr=Nc5ZMyU9%P)pi*GxCvG2eC9ZQlda9d|d~|KPaeUd!1RtM9#UIrGA9 z&;2_eer|d6@y+*N%Ij~v`1*VH&9{;JK!(VyzxDIa-wV&b39r4m?ZL-&4?oPg_U6pF z8AlixIHEjV978H@y@`6BFXJlmJtHl>%-`;${JHd-b99cDc_ayIE7~e@^2oAq2!wvQ z=VR@_80ho)ZI6>zfC#x!-(YfY>O2X$oIQ^A>Z3s~@7JPK=ncL^Irc?9Z*;GDxaZ$N^Z^dUt zmA$#1XZ01|>~hc8uVpbQ)lUB4;TINrYc#edNrcasdQmN`Y;NQ6k8gyxh`rzB_3zt+ zke<5Vvjny-vb?i3;MA!#JNTLN=5<%wO`Tws7__k8)kJjO`dis65)~iq{#adhar%ks z-;4{V&ROwb`;2ok`#oPKo{}}KZQdE2-Me#fWR?tL@8rC^!u)2H7p%Kqm>$UWkes2d z{;EjQy=C_Iz|6lMRo`YcPXF{N?Vy`n{A1yiH*Y@+nqItY<6p#X_2|t#7K4&UM&Zv` znER^A?l`c|ND;QFi1g*z(=y%rQ<71`;;S9DBJUo17AMa?r~RdI^BZALyW?pIdU2vj zzf&Jf>pAx|@@S2au4KgHtwnNW%fHP|XD%qWK1;u)pts`FO0~sOUw+B^Gw)4|Buq%8g1vF616sd0=v9i>+-*U+o7EDdgI>d39J0?e82L-G5vdVL-g_d zOZutL0rgp?zeqX^}_b93F z(q*65x7)BkDs9|(z@qv?apsxU5Z_I&)s~+)J;nKK;+JIa&-&a7^VSQ-Zs8N$ESzhz z=7;!hdxid}Dbahg&Hh(<%Dq4Kc<*d4zs}7T&n`VR?2F=?c+glerMGEz{oT4h?5%f_ zZX_>V%fE6lZ(+iY_i{CH2X5Ic-+#Z>`jgk+lOb064>=0ry9>63^w0C$+^OUCeVcr~ zOK5<6bM`mO7vh)QLnB=c8y* =o6$zqhv3`rO^ZX9AOEHiwlpb4^T7`t*>ekKub; z&!Wz0hkJG`>{)jq{?TVok!O4xiYKn{pEX@v@`q%#}<${@BNrBV3H;SF_o9%b>Zoy@RgpvtW^3GdVh3c`k>`N4uTqJ6=z~|qm zzWouYoFV*vZ5vnI(9To3lTvnPW|!56qI3WKOwXrWXIb2DXIuF1>}Pd78&%^Cj;oe0 z^w`6j6tOS=cD{&%+i9*z&hnjnTxYlLeK0Smw{g1jGLOQA;&1pTSxwp!c680Jc$L-f z7ETb0ILl?E_wDeLcNf>};GZ(vc&%gWbm!}gHku!LLTlMV)(Jc;^AlX_us^pTpp@hHGR0exj*>kp^lZTD;AjZmiux&xqYAcT~Tq{ z4&Jptg81&ao&5AIv?xcv`2C}H9jkRa*L^a)?D~N_t#3I?$c_Ui46k3gYxk~jCf|bk ztkd_kR-8<@WnU;TJL`$r%q`2F?Cs&5)tG#G&--0#?s&TfX1+Y9e#|$Z)5ouP{ZS{e zrt1AHm)Ck0JU+7W@>FL3xFc&WUb;FxP+0d)n&|A7>Vv*bhy6FYM+Jr4W%-o%?%Lfr zzK>de=c>J&wfgAl^_e?Txwf$1QQ%VjS8#X6MbY_@5}($YHytqhwoXv^OlZ1HwQ}Cs zrCARHt{hvd6=-02>XF~ymCa%$C!EcvMXlOX7Jeh6#kVWM|MHIhlzH2qSewn9=CIVo z)yibT5gF|(_hVR-Yl}Fngr&e6&EBGs8HuKXCcay|?X5H4sr@qUo zt>`}-=&AA8Z2l386Ur7k(>-RjdVMKUySR2q?#BblZ(e)0zHSwbmJE5P@^>(6azR?n|r*%NDYqj!3b%sC$Q2_5I)ba{svu7|u^y=iYE9<0q(B<>~6@vd$@?2>^eYQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?r;Z+P_9~jVcuZ2+x^3OEPleX6 muYcRZ&xjRxPEx78!uXn*DdffiYQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?Sed#I+x3r z9f^xYG=3g&)DAG(!1Lqi2BQZJim3-2nNKy?uZ>}oNxW+Gz+?4PM)ioLJQgRpQV*OI z(_>DH*upa-bE8qhw$@V(n{@)%>P1!@4}Ce=^Y0beb6&~!7X?~b^?A9sUwNoi`d7o` zL49GXuGIs}^9$Ina>{%-YPWRhG~Q75nndo^4UF<}Rb~Q;1qbYvw_BJWlSuBFc~rVp XbW`YD|BdYo3=9mOu6{1-oD!MYQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?$cTbGPg}UaiU~XPIJn>BfsPJo(w}bDvc{UEavsgOn#jp2Dz&+#DKBcJt5BEas`ElzyRwc6 zb!F!5c5ynJJKbl+%C|yXd-Hc6aax}{J!ZwdGLD6FR6;V(SzTeiwDr8l^?fOSB?7N9 zYF}s0{Ies|Q|ba&uZQxRHj^iZ=Q&!wTo{qR>dEOg#!T7C6R#PnW+%2rzm!bwF+4Wo c|5L`_%nJ(VtgP!{U|?YIboFyt=akR{0202Fe*gdg literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_skip_previous_black_36dp.png b/app/src/main/res/drawable-xhdpi/ic_skip_previous_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f4040ad6dee559b7a9858c87aff4038d4541a001 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84i*LmhW}5h&oD4BC?tCX`7$t6sWC7#v@kII zVqjosc)`F>YQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?O36N#>do9EvRh?`(=5$0w!uI62ReQF|P@ zqEqypU;Ope0piuqpMKLYIezu8GUO3$7&C#*pnGjQh;APW} zPm3a^m1UWQY)uwgR_0^(_C!?G%Bsa+=O3D@{{H2Hz6uvbZUzPh22WQ%mvv4FO#p;4 Bm5TrX literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_pause_black_36dp.png b/app/src/main/res/drawable-xxhdpi/ic_pause_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb2bcb9df21685518fccccb19bac20a8e55ba71 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yV8{Vs4i*Lm2G#ueZVU_z3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228K#c7srr_TW>F2zopr E0J5P!CIA2c literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_play_arrow_black_36dp.png b/app/src/main/res/drawable-xxhdpi/ic_play_arrow_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8c65044c2a886cb26238aa8b2b46142c654484 GIT binary patch literal 497 zcmeAS@N?(olHy`uVBq!ia0y~yV8{Vs4i*Lm2G#ueZVU_z3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22F6TJ7srr_TW@Ed_H}j?an{|K?8`hwplShk5Nilytk0?i9a9W46|&1F z`Y78{^?^b9owIK&f6T2NbWH_1|ekQLb_u=w7MTnVktbdI?b@j;(_O8iNa%X zndnaUtNDTpb@%ZYP?uRbC7uoVe_o`%m zm-#{0j~kb2*=6L}y;&Xi?2Uj>W8!!2%Q=Vb)<*>X(Fhc^S7w#{b}=cjy>>~&i^TW( zYLzld2RD2d(e85ZTlGkBW60rqaXL3QY!~&mc%yq%h2MI)?6=!TyB_hghJF+mXiVJS l_a;9K8aSX}`tphU*FwRp+4=rw7#J8BJYD@<);T3K0RVhxw~+t< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_skip_next_black_36dp.png b/app/src/main/res/drawable-xxhdpi/ic_skip_next_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0adad3119c323e08d768bf03e69ed098d19b36e3 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0y~yV8{Vs4i*Lm2G#ueZVU_z3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22F6fN7srr_TW@de^>s>=Y5gcH%&l$h9ldsGIiq<2(@X~Q1FQwiY6ln# z7_x6=XQn$lC-pIR+^fESr2qfNpBE?Fa5f&Uj^|{6fQI_im5=kQ((5b!YP^n|J~Q#! z>~|$IB+?@Nt8g_1989Za9BE#o@+3Q%S*X`M$?m&I%vib*4Y*$#nM@*Z*35WUpEt z`Dn?l7fOXJ`a=J=wfwsnqbkRnQ#!fwPuaAJ1S@|VgSSTgJCx2 z{A+r`$qlZLN;@ua>#RPa?f!UL!psdDy*Ic-oEFj%xRx3>w|DOw9!MB49MG?3Uzhok TuWjz3Eg&IJS3j3^P65Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22F6lP7srr_TW@b|^gSHF(DG1N$ahxBlnX)5@@x&92~0B>)IgLGBewyA zX{P4O6&e!+M8voP|Ku#+uy*&K_+K9NPb{XZdow^m&eZu^!|j*NQg564V(s?+oGlw- z@4no9JUem82IswBY9{szl`TDgZ~xxr_O~xHC)~btAThm4{zaX2!VMRG)A!l(Wouk> zrB z2_}|$U$9%Vh2`wwQ{ERW)>LxdYTK&oczMG&)eMPixtzCJOJkeD5@+i;Zr*VFjDhDY z)wr&D^Zw&!3_Pv;_uLKtW?a8uwP)#EieP^|8UGI5&!#2}QnQMF0&K^FMeaUXk7B%HVN%EGf yq9;2hZtVZMcHPMh8=lVM;aPo61sX&Qx1WgbUi8wE5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228KnRE{-7;x87bl$jjis!r=Jj{^snaImdGtkGQm`cus<&chiz5S5+4O z-?`=whk`=`10xd)#{@7bpy1HJ!T}-~7@1U{QUVGNOfW$qO!W+$Q1vVx5TlUQBP><% eoTT@SA#xAXigzDoy=P!xVDNPHb6Mw<&;$UK|4B*! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_black_36dp.png b/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..371a01f9b58b0c87efe39f872447b185832c2bed GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0y~yV3+{H94rhB48Hza#taM$3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22F6pKE{-7;x8Bb24L#x@z&4xPon--o$pR+P2T6g9de>Ow3J%QG7Pk{g zndI|K{ch}6%N5_tvM2i<<6%GpM#WpJRi;e%dt>!og`~&{KHoC?S7>lf`g?2k-9^bD zeyTr*Cg-HTH{0(jrh@pn=QA`pCw2Z<&#ClpbyLTGHpe6Np#mT8D`-^y*;<(Sc)hH* zWc}NyLqD>=PdXYe>MdFys^|MBbg#kCyo_Veji{JEO2@bP*#Zs~f{=nFqqzhpWV z-z%>7@70EYkKxN(JNNI>_4sqOl=0E}bH(!Yyfa?^$UY%+JpS-AlYdfH?H{i{*x9{b z?M&z&)6~94>obdm>V4;Q|H%I2CtuGp_m}dwbM8I*FHfC`KT-3t{SmXh$aH zBu%|7tJ!=`_xj{}TlN=Rw)42)&Rrz_WnqZOB$6q@2hTrO}oaa0L5@u7u2!`&b3DsxZHJfto; P4J761>gTe~DWM4fG1cu3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_skip_next_black_36dp.png b/app/src/main/res/drawable-xxxhdpi/ic_skip_next_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..51540520db5508db4407d1fe2e572fe55407e92f GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0y~yV3+{H94rhB48Hza#taM$3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22F4SfE{-7;x8B~_>&xsY;P6mTh*3~dQS-=z%M7vsj3ErN4$RA#wG3Dt z7>_JbQ&CoQbaE3ZsIISOdRvpv{o#e@x1VqC=7OBZfB*;TpDBL(|D<@k?Cbj*d$(IC zudsPhe&?v3<5S1@M>7_DS}?!RHQ@e&{z8X<$_w8u)K}zR_daa~EvfIxXnJj3{rd zjEc3YVkT>@1#wFSWxr(odR5BNcB@-}|60K-!PzW=CONi0yQbDHS^w8#y547Xz0Y^E zpY|`hGGoWJq^(=-7G~~Vyd|+L}r#+LHi$9oT}ve@qYYO{6=$1BaX zUz)nUwBPp?UbftQ^KqqlfAWPF6f;exrfg*aDw5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22FBx_E{-7;x8B~`XvmT%ar|NV84s1|oSsLYh&Zq=XVO{#Lg9^UA_{7v zr(Bqf+Z<}{-M(%5`{wsbkq6I?zkU1vb~ghYWZb+yX};l^B*hCw?jMaV$v=~4xz+Rf zhs<01?LQr=KU%zs-u=6u=rtFLKOwK7fx{Z^Tss?P@ z!s0b;n#0LULK=}#Osd}A3sN$t@=wuS`>65L(ol;FS>CI27KBa@JLwQRE$pDf-DzPv z9b%`4t#o*;v(~BcT6B~v)7t%8yjWgs-l8VI;{Byr6$}1(XJ2Y;i-?-cXCkgqz0mqz z(off4hg_|y7ykaJ5>U3dLOI~sjVlIW>=y4Vitju;kkg=iUE6)#Oy~A*Ka=NMHyRc5 z^BG&q*{1(mxAi3ZtKHW?reEt~iK<^K%Jsy1PW`59r&vF^ermiPbx|&{oU5 W+r7!?;WS1+kf5ilpUXO@geCw@JM{Jd literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/music_player_widget.xml b/app/src/main/res/layout/music_player_widget.xml new file mode 100644 index 00000000..6d3b0ac2 --- /dev/null +++ b/app/src/main/res/layout/music_player_widget.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-v14/dimens.xml b/app/src/main/res/values-v14/dimens.xml new file mode 100644 index 00000000..4db8c590 --- /dev/null +++ b/app/src/main/res/values-v14/dimens.xml @@ -0,0 +1,10 @@ + + + + + 0dp + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b048dab6..9c3b917f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -36,4 +36,11 @@ 48dp 100dp + + + 8dp + 64dp diff --git a/app/src/main/res/xml/music_player_widget_info.xml b/app/src/main/res/xml/music_player_widget_info.xml new file mode 100644 index 00000000..2f44fa79 --- /dev/null +++ b/app/src/main/res/xml/music_player_widget_info.xml @@ -0,0 +1,11 @@ + + + \ No newline at end of file