質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1213閲覧

YouTubeをバックグラウンド再生したい

Create12c

総合スコア52

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2022/05/19 07:48

編集2022/05/20 10:25

YouTubeをバックグラウンド再生したいです。

「android-youtube-player」というAPIを使ってフォアグラウンドでYouTubeを再生することには成功しました。
しかし同APIではバックグラウンドで再生まではできませんでした。
(Serviceで再生するメソッドを発動させても何も起きなかった)

過去にteratailで同じ様な質問をしている投稿を見ました。
音楽と映像を切り離した再生はGoogleが禁止しているとの回答でした。
しかし通知に何を再生しているのか明示していれば問題ないとの話もあります。
また、GooglePlayには実際にバックグラウンドでYouTubeを再生しているGoogle非公式のアプリもあります。

ServiceでYouTubeをバックグラウンド再生するにはどのような方法があるでしょうか?
ご教授よろしくお願い致します。

再生できなかったServiceのコード

kotlin

1class PlayService : Service() { 2 3 inner class MyBinder : Binder() {} 4 private val mBinder = MyBinder() 5 override fun onBind(intent: Intent): IBinder? { return mBinder } 6 7 private var handler = Handler() 8 private var runnable = Runnable {} 9 private var myApp = MyApplication.getInstance() 10 11 12 // サービスの初期化時に実行する処理 13 override fun onCreate() { 14 super.onCreate() 15 } 16 17 @RequiresApi(Build.VERSION_CODES.O) 18 override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { 19 val setNotification: SetNotification? = myApp.setNotification 20 val title = "再生中:" + myApp.videoTitle 21 val loadVideoId = myApp.videoID 22 val youTubePlayer = myApp.youtubePlayer 23 val context = myApp.context!! 24 25 // 通知を表示(動画タイトルを表示) 26 if ((intent != null) && (setNotification != null)) { 27 setNotification.createNotification(title) 28 startForeground(111, setNotification.notificationBuilder.build()) 29 } 30 31 // 再生開始(再生できない) 32 if (youTubePlayer != null) { 33 loadVideoId?.let { youTubePlayer.loadVideo(it, 0f) } 34 } 35 36 // 1秒ごとに通知を更新開始 37 handler = Handler() 38 runnable = object : Runnable { 39 @RequiresApi(Build.VERSION_CODES.LOLLIPOP) 40 override fun run() { 41 // アプリがフォアグランドになったらサービスを終了 42 if(isForeground(context) == true){ 43 stopSelf() 44 return 45 } 46 handler.postDelayed(this, 1000) // 1秒間隔で更新 47 } 48 } 49 handler.post(runnable) 50 51 return START_NOT_STICKY 52 } 53 54 // サービスの終了時に実行する処理 55 @RequiresApi(Build.VERSION_CODES.O) 56 override fun onDestroy() { 57 val youTubePlayer: YouTubePlayer? = myApp.youtubePlayer 58 if (youTubePlayer != null) { 59 youTubePlayer.pause() 60 } 61 // ハンドラーを停止 62 handler.removeCallbacks(runnable) 63 } 64 65 // アプリがフォアグランドかどうか調べる 66 private fun isForeground(context: Context): Boolean { 67 val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager 68 val runningProcesses = am.runningAppProcesses 69 for (processInfo in runningProcesses) { 70 for (activeProcess in processInfo.pkgList) { 71 if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 72 return true 73 } 74 } 75 } 76 return false 77 } 78}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

https://stackoverflow.com/questions/42160968/how-to-play-youtube-videos-in-background-in-android
上記を参考にしました。

「youtube-dl」という独自のサービスベースを利用してバックグラウンドでYouTubeの動画のオーディオデータを 取得&再生 する方法で開発を進めて行こうと思います。

「youtube-dl」について調べると、「youtube-dl」を利用したAndroidアプリのプロジェクトファイルが入手できるため、それを解析して自分のアプリに取り入れたいと思います。

投稿2022/05/20 01:25

Create12c

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問