2012-09-16 8 views
6

バックグラウンドサービスで実行されているmediaplayerインスタンスがあります。私の主な活動では、私は表面観察をしています。アンドロイドメディアプレイヤーからサーフェイスビューを切り離す方法

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

ビデオが表示され、これまでのところすべて正常に動作します。私のサーフェイスビューが破棄されると、surfaceDestroyed()コールバックで、mPlayer.setSurface(null);を呼び出すことによってメディアプレーヤからサーフェイスビューを切り離そうとします。問題は、私がこれを行うとき、私はmediaplayerからエラーを取得することです(エラーコード1)。

私はMediaPlayerオブジェクトを設定した後、mPlayer.setSurface(sv.getHolder().getSurface());でsurfaceviewを設定した後、mediaplayerオブジェクトを停止または再初期化せずにそのサーフェイスビューを解放または切り離す方法がありますか?

ありがとうございます。

+0

メディアプレーヤーからサーフェスを削除しようとするとどうなりますか? – artkoenig

+0

@Artjom私がやろうとしていることは、ユーザーが画面を閉じたり、主なアクティビティから離れて移動したりすると、ビデオのオーディオ部分をバックグラウンドで再生し続ける場合です。ユーザーが私の活動に再び入り、クリップが私のバックグラウンドサービスで再生されている場合は、ビデオを自分のサーフェイスビューに自動的に表示します。 MediaPlayerオブジェクトを停止またはリセットせずにこれを行う方法はありますか? – ilikekiwis

+0

@ilikekiwis私はここで同じことをしようとしています。あなたは後者のアイデアを考え出しましたか? – Wesley

答えて

0

ユーザーがナビゲートしたときに再生を一時停止することはできません。これにより、再生を続けるのに役立ちます。しかし、別の問題があります:ウィンドウSurfaceViewから離れたあなたの活動/断片が破壊されたとき。つまり、ユーザがアプリに戻ったときに、SurfaceViewのインスタンスを再作成してメディアプレーヤーを再初期化しなければならないということです。

関連する問題