Open4

Sound Cloud 上の音楽をAndroid/iOSアプリで再生するには?

madokamadoka

https://soundcloud.com/you/apps
ここのsign up for new app から新しいアプリとして登録する必要があるようだ

ボタンを押してみたところgoogleフォームが表示された。

新規の登録は締め切っているとのこと。
(登録者が殺到して手に負えなくなったので新しい方法を模索中とのこと)

登録せずにこっそり再生する方法ないだろうか、、、

madokamadoka

ちなみに今回再生したいのは、限定公開の音楽。
(リンクを知っている人だけが再生できる)

ActivityにWebViewを持たせてリンクを読み込ませて再生することはできたが、
以下の課題に直面した。
・アプリがバックグラウンドに行った時の制御がWeb側にお任せになってしまう
 (Android Java側から制御する方法がわからない)
・再生画面を閉じても再生され続ける
 再生され続けるのは良いとしても、停止したくて再度再生画面を表示したときに、
 画面初期表示されるので、画面的には「再生ボタン」が表示されていて、
 (未再生状態になっていて)、停止できない
 →再度再生画面を表示したときに、WebViewが再生状態を保持していて
  それを反映するとかできたらいいんだけど

madokamadoka

https://syncer.jp/Web/AMP/Component/amp-soundcloud/
こういうやり方もあるらしい。

asset配下にHTMLで上記のコードを書き、
Activityに持たせたWebViewでそのHTMLをloadUrl()してみた。

すると、
参照元URLのサンプルにも表示されているSoundCloudの再生ウィジェットが画面上に表示された。

だが、ここでも単純にWebViewでリンクを読み込ませた時(下記)と同様の課題に直面。
https://zenn.dev/link/comments/ebebb5966b5133

やっぱり、SoundCloudのAPIを無理に使うよりも、再生ファイルをどこかしらからDLして、
自分で再生した方が実装手順の見通しが立ちやすいなぁ、、、

SoundCloudAPIへのアプリの新規登録はもう終了しているし、なんか無理にSoundCloudAPI使おうとするとドツボにハマるような気がする。。。

madokamadoka

ひとまずGoogleDrive上にある音楽をダウンロードして再生する方法を調べてみることにする。

こちらにまさにそれをやろうとしている説明書きが✨
https://www.reddit.com/r/FlutterDev/comments/o1htzt/using_google_drive/

just_audioというライブラリが良いらしい。

just_audioの使い方がわかりやすいソースコードを発見
https://zenn.dev/r0227n/articles/085c234061235e

Ryo24さんのソースコードのストリーミング用URLを
下記こんぶさんの記事を参考に、
GoogleDriveダイレクトダウンロードリンクに変更して実行してみた。
https://zenn.dev/pressedkonbu/books/flutter-reverse-lookup-dictionary/viewer/007-play-video-in-google-drive

アプリビルド時に64K問題が発生。
hayashi-ayさんの記事を参考に、最小SDKバージョンを21にしたらビルド成功。
https://qiita.com/hayashi-ay/items/a7a06b6f1fb0a8a25dcf

ストリーミング再生行けた( ; ; )

やっぱりどこかドライブにあげた音声を再生するようにした方がアプリからの制御がやりやすいよね(Web(HTMLやjavascript)とFlutterの連携方法に明るければもっとやり方あるのだろうけれどWebへっぽこの自分にはこちらの方がとっつきやすく感じる😨)。

引き続きheyhey1028さんの記事も読みつつよりユーザビリティの高いアプリにしていけたらいいな。
https://zenn.dev/heyhey1028/articles/d012d043604069
https://zenn.dev/heyhey1028/articles/5e1229c0f2224b