استفاده از Spotify SDK برای اندروید

سلام دوستان امیدوارم حالتون خوب باشه :)امروز میخوام اولین مقاله ام رو با شما به اشتراک بزارم امیدوارم که به دردتون بخورهخوب وقت رو بیشتر از این هدر نمیدم و میرم سراغ اصل مطلبچند وقتیه که Spotify برای اندروید SDK اش رو منتشر کرده و یک سری قابلیت و فیچر داره و من از اونجایی که دیدم در اندروید آموزش چندانی ازش نیست تصمیم گرفتم موضوع اولین مقاله ام این انتخاب کنمتو این آموزش میخوایم ببینیم چطور میشه با این SDK لاگین کرد به اکانت و بتونیم play list یا track رو پلی کنیمتو قدم اول نیاز به کلید sha1 داریم که تو اندروید استودیو یا با کامند تو CMD میتونید بگیریدتو قدم بعدی نیازه که https://developer.spotify.com/ لاگین کنیم داخل اکانتمون تا بتونیم اپلکیشین رو ثبت کنیم و کلید ها رو دریافت کنیمتو این مرحله وقتی گزینه New Project رو بزنیم اون کلید sha1 و package name و callback uri رو از ما میخواد که callback uri رو اگه ندارید این وارد کنیدmy-awesome-app-login://callbackوقتی این کارها رو انجام دادید client id رو بهتون میده و اونو ذخیره کنیدخوب بعد از ایجاد پروژه تو اندروید استودیو از GitHub کتابخونه رو دانلود میکنیم بعد از دانلود از منوی file>new>new module گزینه import .JAR/.AAR package و تو دیالوگ باز شده لوکیشن فایلمونو بهش میدیم تا ایمپورت بشهحالا تو فایل build.gradle این کتابخونه ها رو اضافه میکنیم(یادتون نره قند شکن فعال باشه :) implementation project(':spotify-app-remote') implementation &quotcom.google.code.gson:gson:2.8.5&quot implementation 'com.spotify.android:auth:1.1.0'حالا وارد Activity تون میشید و با هم کدهامونو بزنیم, قبل از onCreate متغیر هامونو تعریف میکنیمprivate static final String REDIRECT_URI = &quotmy-awesome-app-login://callback&quot private static final String CLIENT_ID = &quotyour client id&quot private static final int REQUEST_CODE = 1337; // sample private SpotifyAppRemote mSpotifyAppRemote;حالا من یک متد تعریف میکنم با نام spotifyAuth که داخل این متدم کدهای مربوط به لاگین به اسپاتیفای رو مینویسم public void spotifyAuth() { AuthenticationRequest.Builder builder = new AuthenticationRequest.Builder(CLIENT_ID, AuthenticationResponse.Type.TOKEN, REDIRECT_URI); builder.setScopes(new Strinhttps://virgool.io/@am.jabbarii/d/spgjmmdd1hfsg[]{&quotstreaming&quot, &quotuser-library-read&quot, &quotuser-read-email&quot}); AuthenticationRequest request = builder.build(); AuthenticationClient.openLoginActivity(this, REQUEST_CODE, request); }در بخش Scopes شما میتونید Scope های که نیاز دارید رو اضافه یا حذف کنید برای مثال من از streaming , user-read-email استفاده کرده اماستریمینگ برای مجوز پخش اهنگ از اسپاتیفای user-read-email برای دسترسی به ایمیل کاربر وخب حالا متد spotifyAuth رو در onCreate فرا می خونیم و در اکتیویتی مورد نظر برای هندل کردن کانکت شدن و یا اینکه کاربر لاگین کرده یا خیر متد onActivityResult رو صدا میزنیم و کد های زیر را مینویسیمif (requestCode == REQUEST_CODE) { AuthenticationResponse response = AuthenticationClient.getResponse(resultCode, data); switch (response.getType()) { // Response was successful and contains auth token case TOKEN: // Handle successful response ConnectionParams connectionParams = new ConnectionParams.Builder(CLIENT_ID) .setRedirectUri(REDIRECT_URI) .showAuthView(true) .build(); SpotifyAppRemote.connect(this, connectionParams, new Connector.ConnectionListener() { @Override public void onConnected(SpotifyAppRemote spotifyAppRemote) { Log.e(&quotMainActivity&quot, &quotConnected&quot); mSpotifyAppRemote = spotifyAppRemote; } @Override public void onFailure(Throwable error) { Log.e(&quotMainActivity&quot, error.getMessage().toString()); } } ); break; // Auth flow returned an error case ERROR: Log.e(&quotMainActivity&quot, &quotError response&quot); // Handle error response break; // Most likely auth flow was cancelled default: Log.e(&quotMainActivity&quot, &quot&quot); // Handle other cases } }تا اینجای کار ما با موفقیت به اسپاتیفای کانکت شدیم و از اونجایی که مجوز استریمینگ رو هم گرفتیم میتونیم آهنگ یا پلی لیستی رو پخش کنیم حالا برای اینکه آهنگی رو پخش کنیم ما نیاز به آیدی اون اهنگ داریم بعد از پیدا کردن آیدی حالا میتونیم پخشش کنیم کد های زیر جهت پلی کردن ی موزیکprivate void playSpotify() { mSpotifyAppRemote.getPlayerApi().play(&quotspotify:track:7l2tmgUhV7Y2aJHjiszifg&quot); // Subscribe to PlayerState mSpotifyAppRemote.getPlayerApi() .subscribeToPlayerState() .setEventCallback(playerState -> { final Track track = playerState.track; if (track != null) { Log.d(TAG, track.name + &quot by &quot + track.artist.name); } }); }با این کد ما با موفقیت Track Mr. Prefectly Fine (Taylor's Version) رو پخش کردیملینک پروژه تو Githubامیدوارم این آموزش براتون مفید واقع شده باشهاگه سوالی یا نظری و ... داشتید میتونید زیر همین پست بزارید!