6

バックグラウンド サービスで実行されている mediaplayer インスタンスがあります。私の主な活動では、サーフェスビューがあります。

アクティビティが起動し、サーフェス ビューが作成されると、サービスにバインドし、メディア プレーヤーのディスプレイ サーフェスをメイン アクティビティのサーフェス ビューに設定します。私はこれを行いますmPlayer.setSurface(sv.getHolder().getSurface());

ビデオが表示され、これまでのところすべて正常に動作しています。SurfaceView が破棄されると、surfaceDestroyed()コールバックで を呼び出して、MediaPlayer から SurfaceView を切り離そうとしますmPlayer.setSurface(null);。問題は、これを行うと、メディアプレーヤーからエラーが発生することです (エラー コード 1)。

だから私の質問はこれです.MediaPlayerオブジェクトを設定し、SurfaceViewを設定した後、MediaPlayerオブジェクトmPlayer.setSurface(sv.getHolder().getSurface());を停止または再初期化せずにそのSurfaceViewを解放またはデタッチする方法はありますか?

前もって感謝します。

4

1 に答える 1

0

ユーザーが離れたときに再生を一時停止することを回避できます。これにより、再生を続けることができます。しかし、別の問題があります。ウィンドウから切り離されたアクティビティ/フラグメントSurfaceViewが破壊されたときです。つまりSurfaceView、ユーザーがアプリに戻ったときに再作成されたインスタンスでメディア プレーヤーを再初期化する必要があります。

于 2014-12-11T05:22:43.913 に答える