LoginSignup
1
0

More than 5 years have passed since last update.

CordovaのAndroid版アプリでもYoutubeの自動再生を可能にする

Last updated at Posted at 2018-07-08

まえがき

モバイルアプリケーション開発においてYoutube等のメディア自動再生とその他機能(※)は
不必要な通信を防ぐためにOFFになっており、それはネイティブアプリ開発時だけでなく
JavaScript+Cordovaを使用してハイブリッドアプリを開発するときも同様です。

※自動再生だけでなく、ユーザが最初に再生ボタンを押してからでないと
再生停止ジャンプその他様々なメディアコントロールをコードから行うことが出来ません。

これをONにするためのCordovaのオプションはiOSに存在するもののAndroidにはありません。
とはいえ、「じゃーCordova使った開発ではAndroidだけYoutube自動再生できないのかよ :cry:
といえばそうでもなく、Androidのネイティブアプリ設定APIにある
setMediaPlaybackRequiresUserGesture(true/false)というメソッドを叩くことで
有効化出来ます。

コード修正

いじるファイル(com/example/hogeはアプリ名と名前空間です。適宜読み替えて下さい。)

platforms/android/app/src/main/java/com/example/hoge/MainActivity.java

import android.os.Bundle;
import org.apache.cordova.*;
import android.webkit.WebSettings; // ★追加
import android.webkit.WebView; // ★追加

public class MainActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // enable Cordova apps to be started in the background
        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }

        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);

        // ★追加
        WebView wv = (WebView) appView.getEngine().getView();
        WebSettings ws = wv.getSettings();
        ws.setMediaPlaybackRequiresUserGesture(false);
    }
}

蛇足

platforms以下をGit管理下に置きたくないという場合は別の場所にMainActivity.javaファイルを保存して
そちらをバージョン管理し、Cordovaのhook機能を使ってビルド前に移動するのが良いと思います。

config.xml

<platform name="android">
  <hook type="before_build" src="scripts/updateMainActivity.sh" />
  ...

scripts/updateMainActivity.sh

#!/bin/bash

# 例えばnative_codesにMainActivityを置いている場合
cp native_codes/MainActivity.java platforms/android/app/src/main/java/com/example/hoge/MainActivity.java
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0