如何在android中维护chromecast的会话?

时间:2014-09-03 06:44:40

标签: android casting chromecast

我有歌曲列表,我只选择该列表并转到播放器页面,我可以在第一次连接时在电视上播放歌曲列表,我只是将这些歌曲数据发送到json对象,该对象已经传递给接收者使用setCustomData方法。

代码部分是:

if (mRemoteMediaPlayer == null || !mApiClient.isConnected()) {
            Toast.makeText(this.ctx, "No Connection", Toast.LENGTH_LONG)
                    .show();
            return;
        }
        MediaMetadata mediaMetadata = new MediaMetadata(
                MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
        mediaMetadata.putString(MediaMetadata.KEY_ALBUM_ARTIST, ""
                + singers.getText().toString());
        mediaMetadata.putString(mediaMetadata.KEY_ALBUM_TITLE, ""
                + songTitle.getText().toString());
        mediaMetadata
                .addImage(new WebImage(Uri.parse(cdImgurlList.get(0))));

MediaInfo mediaInfo = new MediaInfo.Builder(songUrl)
                .setContentType("audio/mp3")
                .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
                .setCustomData(customjsonArrayWrapper)  // here passing json object to the receiver
                .setMetadata(mediaMetadata).build();
        mRemoteMediaPlayer
                .load(mApiClient, mediaInfo, true)
                .setResultCallback(
                        new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {

                            @Override
                            public void onResult(MediaChannelResult result) {
                                if (result.getStatus().isSuccess()) {
                                    Log.d(TAG, "Media loaded Successfully"
                                            + result.getStatus());
                                    Toast.makeText(
                                            RaagaActivity.this,
                                            "Media Channel loaded Successfully"
                                                    + result.getStatus(),
                                            Toast.LENGTH_SHORT).show();
                                    // Update the UI While chrome casting
                                    UpdateUIControlsinCasting();

                                } else {
                                    Log.d(TAG,
                                            "Media loaded Not Successfully"
                                                    + result.getStatus());
                                    Toast.makeText(
                                            RaagaActivity.this,
                                            "Media Channel not loaded Successfully"
                                                    + result.getStatus(),
                                            Toast.LENGTH_SHORT).show();
                                }
                            }
                        });

    } catch (IllegalStateException e) {
        String err = (e.getMessage()==null)?"IllegalStateException":e.getMessage();
        Log.e(TAG, err);
    } catch (Exception e) {
        // TODO: handle exception
        String err = (e.getMessage()==null)?"Exception":e.getMessage();
        Log.e(TAG, err);

成功投出这些歌曲列表并将该页面转到其他应用程序并返回到我的应用程序,我刚刚选择了另一个播放列表并再次转到播放器页面,其中转换按钮处于禁用模式,我需要重新连接chromecast设备,会话未得到维护。所以请帮我重新连接以前连接设备的同一设备,并在应用程序处于后台状态时维护会话。我引用了https://github.com/ivan-aguirre/chromecast_samples/blob/master/DropboxCast/app/src/main/java/com/dropboxcast/dropboxcast/CastController.java所以我尝试了Cast.CastApi.joinApplication(mApiClient,APP_ID,sessionID)。但在使用chromecast回到播放器页面时,应用仍然会崩溃。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要跨活动维护应用中的会话。看看Cast Companion Library,它将为您完成这项工作: https://github.com/googlecast/CastCompanionLibrary-android