使用MediaRouteButton将视频投射到电视

时间:2017-08-14 23:01:20

标签: android youtube chromecast google-cast

我打算使用名为" Casty" this小型库(基于 Google Cast V3 构建)来实现视频广播功能在我的应用程序中。

我希望像this一样

投射YouTube视频

以下是代码,我已经复制了(这应该通过Chromecast通过某些基于Web的视频网址在Android TV上播放视频):

public class MainActivity extends AppCompatActivity {
    private Button playButton;
    private Casty casty;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        casty = Casty.create(this)
                .withMiniController();
        setUpPlayButton();
        setUpMediaRouteButton();
    }

    private void setUpPlayButton() {
        playButton = (Button) findViewById(R.id.button_play);
        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                casty.getPlayer().loadMediaAndPlay(createSampleMediaData());
            }
        });
        casty.setOnConnectChangeListener(new Casty.OnConnectChangeListener() {
            @Override
            public void onConnected() {
                playButton.setEnabled(true);
            }

            @Override
            public void onDisconnected() {
                playButton.setEnabled(false);
            }
        });
    }

    private void setUpMediaRouteButton() {
        MediaRouteButton mediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button);
        casty.setUpMediaRouteButton(mediaRouteButton);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        casty.addMediaRouteMenuItem(menu);
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private static MediaData createSampleMediaData() {
        return new MediaData.Builder("http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4")
                .setStreamType(MediaData.STREAM_TYPE_BUFFERED)
                .setContentType("videos/mp4")
                .setMediaType(MediaData.MEDIA_TYPE_MOVIE)
                .setTitle("Sample title")
                .setSubtitle("Sample subtitle")
                .addPhotoUrl("https://peach.blender.org/wp-content/uploads/bbb-splash.png?x11217")
                .build();
    }
}

注意:我还没有检查过,因为我没有测试Casting功能所需的东西......比如 Chromecast和TV

我的要求

而不是某些Web based Video URL,如果我想使用相同的库投射Youtube视频,我希望我的code should look喜欢或不这样做:

return new MediaData.Builder("https://www.youtube.com/watch?v=RKjUPQCXnsM")

我脑子里有两个问题:

  1. 我需要保留播放和暂停按钮(如果是YouTube视频)吗?
  2. 我的想法:我个人认为,我不需要单独使用播放和暂停按钮来控制媒体播放(因为YouTube会自行处理) - 我是对还是错?

    1. 如果我是对的,那么我需要在何时何地使用createSampleMediaData()方法
    2. 那么您的想法在投射YouTube视频时我们的MainActivity.java应如何?

      糟糕的是,我没有电视,否则,我可以尝试多次尝试。

1 个答案:

答案 0 :(得分:0)

由于android tv emulator cannot be use to test the cast functionality,因此无需对设备进行测试即可。您可以查看有关Get Started的此文档,以熟悉Cast API功能。您可能还想查看此related SO post,其中涉及播放网络视频以投射API。还有一个文档,说明支持的video formats列表是什么。

希望这有帮助。