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

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

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

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

YouTube

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

YouTube API

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

Kotlin

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

解決済

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

Create12c
Create12c

総合スコア48

Android

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

YouTube

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

YouTube API

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

Kotlin

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

1回答

0評価

0クリップ

222閲覧

投稿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

class PlayService : Service() { inner class MyBinder : Binder() {} private val mBinder = MyBinder() override fun onBind(intent: Intent): IBinder? { return mBinder } private var handler = Handler() private var runnable = Runnable {} private var myApp = MyApplication.getInstance() // サービスの初期化時に実行する処理 override fun onCreate() { super.onCreate() } @RequiresApi(Build.VERSION_CODES.O) override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { val setNotification: SetNotification? = myApp.setNotification val title = "再生中:" + myApp.videoTitle val loadVideoId = myApp.videoID val youTubePlayer = myApp.youtubePlayer val context = myApp.context!! // 通知を表示(動画タイトルを表示) if ((intent != null) && (setNotification != null)) { setNotification.createNotification(title) startForeground(111, setNotification.notificationBuilder.build()) } // 再生開始(再生できない) if (youTubePlayer != null) { loadVideoId?.let { youTubePlayer.loadVideo(it, 0f) } } // 1秒ごとに通知を更新開始 handler = Handler() runnable = object : Runnable { @RequiresApi(Build.VERSION_CODES.LOLLIPOP) override fun run() { // アプリがフォアグランドになったらサービスを終了 if(isForeground(context) == true){ stopSelf() return } handler.postDelayed(this, 1000) // 1秒間隔で更新 } } handler.post(runnable) return START_NOT_STICKY } // サービスの終了時に実行する処理 @RequiresApi(Build.VERSION_CODES.O) override fun onDestroy() { val youTubePlayer: YouTubePlayer? = myApp.youtubePlayer if (youTubePlayer != null) { youTubePlayer.pause() } // ハンドラーを停止 handler.removeCallbacks(runnable) } // アプリがフォアグランドかどうか調べる private fun isForeground(context: Context): Boolean { val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val runningProcesses = am.runningAppProcesses for (processInfo in runningProcesses) { for (activeProcess in processInfo.pkgList) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { return true } } } return false } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Android

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

YouTube

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

YouTube API

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

Kotlin

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