【问题标题】:How to Maintain the session for chromecast in android?如何在android中维护chromecast的会话?
【发布时间】:2014-10-27 13:47:01
【问题描述】:

我有歌曲列表,我只需选择该列表并转到播放器页面,我可以在第一次连接时将歌曲列表投射到电视上,我只是将这些歌曲数据发送到 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时回到播放器页面时应用仍然崩溃。如何解决这个问题?

【问题讨论】:

    标签: android casting chromecast


    【解决方案1】:

    您需要在应用中跨活动维护会话。看看会为您做到这一点的 Cast Companion Library: https://github.com/googlecast/CastCompanionLibrary-android

    【讨论】:

    • 感谢您的回复,但是您共享的代码很难理解,现在应用程序正在运行而没有崩溃,但是出现“无当前媒体会话”异常,如何解决这个问题?
    • 嗨 Loen,你能告诉我 mRemoteMediaPlayer.requestStatus(mApiClient).setResultCallback(),我们为什么使用这个方法吗?
    • 结果回调会告诉你API调用是否成功。
    • Thnaks,现在我在 onProgressChanged(SeekBar seekBar,int progress,boolean fromUser)中访问 mRemoteMediaPlayer.seek(mApiClient,progress)时出现异常“无当前媒体会话”。那么我该如何解决这个问题。?请帮助我
    • 你需要与接收者有一个媒体命名空间通道来控制播放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2011-03-03
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多