YouTube开发 出现ERROR_CONNECTING_TO_SERVICE错误

版权声明:本文为博主原创文章,转载必须注明出处!! https://blog.csdn.net/qq_34902522/article/details/79443025

问题描述

android YouTube开发过程中出现了初始化错误,错误提示是ERROR_CONNECTING_TO_SERVICE。错误的效果图如下:


这里写图片描述

这个错误在有的机型上面可以,有的机子上面不行,比如在华为的机子上就会出现这个问题。我们知道在利用YouTube原生jar里面的API开发的时候,必须要在设备上装YouTube 才可以使用。这是因为API的使用需要用到YouTube软件的服务,在华为手机上面经过测试,必须要设备先启动YouTube,然后API开发的软件才可以播放YouTube视频(有的设备上不需要启动,只要设备上有YouTube就可以了)。
去YouTube官网上面找解决方法,就给了这么一句话
There was an error connecting to the YouTube API service.

顿时无语了。 在每次使用软件之前还得让用户打开一次YouTube,这肯定不行。

解决方法

在YouTube组件初始化的时候,在初始化结果回调中如果失败了,就采用第二种播放视频方式。

mPlayerView.initialize(YoutubeKey, new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                    ...  
                    ...

                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

                    //初始化失败,尝试第二种方式

                    }
                }
            });

第二种播放方式是使用YouTubeStandalonePlayer类来播放,代码如下:

private void playYoutubeByStandalone(String id){
        Intent intent = YouTubeStandalonePlayer.createVideoIntent(
                this, YoutubeKey, id, 0, true, false);
        if (intent != null) {
            if (canResolveIntent(intent)) {
                finish();
                startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);
            } else {
                // Could not resolve the intent - must need to install or update the YouTube API service.
                YouTubeInitializationResult.SERVICE_MISSING
                        .getErrorDialog(this, REQ_RESOLVE_SERVICE_MISSING).show();
            }
        }



    }
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQ_START_STANDALONE_PLAYER && resultCode != RESULT_OK) {
            YouTubeInitializationResult errorReason =
                    YouTubeStandalonePlayer.getReturnedInitializationResult(data);
            if (errorReason.isUserRecoverableError()) {
                errorReason.getErrorDialog(this, 0).show();
            } else {
                String errorMessage =
                        String.format(getString(R.string.error_player), errorReason.toString());
                Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
            }
        }
    }
 private boolean canResolveIntent(Intent intent) {
        List<ResolveInfo> resolveInfo = getPackageManager().queryIntentActivities(intent, 0);
        return resolveInfo != null && !resolveInfo.isEmpty();
    }

通过YouTubeStandalonePlayer来播放YouTube视频的话,就不会出现上面说的问题,而且在使用过YouTubeStandalonePlayer来播放YouTube视频的话,就会自动的启用了YouTube的服务,之后再使用YouTubePlayerView,YouTubePlayerFragment来初始化播放,都没有问题了。

猜你喜欢

转载自blog.csdn.net/qq_34902522/article/details/79443025