10

ビデオが継続的にキャプチャされ、SD カードに保存されるカメラ アプリを構築しています。ビデオは短く (数分)、その長さは setMaxDuration() で事前に設定されています。

メイン アクティビティがフォアグラウンドにある間、プロセス全体が正常に動作します。しかし、別のアクティビティ (設定など) に移動すると、ビデオ録画はバックグラウンドで最大期間に達するまでしか機能しません。ファイルは保存されますが、prepare() が失敗するため、新しいシーケンスを開始できません。明らかに、setPreviewDisplay() は適切なサーフェスがアタッチされていないことを好まないためです。

ダミーの Surface、ダミーの SurfaceHolder、lockCanvas()、およびその他のさまざまなトリックを使用しようとしましたが、何も機能しません。有効なサーフェスなしで MediaRecorder を初期化する方法はありますか?

4

4 に答える 4

4

残念ながら、ビデオを録画するには、有効なサーフェスでプレビューする必要があります (Android SDK 1.6 ~ 2.2)。この制限を削除するために記録された拡張リクエストがありますhttp://code.google.com/p/android/issues/detail?id=9570

于 2010-08-05T07:29:56.783 に答える
0

方法はわかりませんが、 IP Webcamアプリでこれができると思います。>=2.3 でしか動作しないのかもしれません。実行されているのを見たバージョンがわかりません。どのような仕組みになっているのか知りたくて質問しました。

于 2011-12-10T02:29:00.267 に答える
-1

Surfaceコールバックを実装していますか?

有効なサーフェスなしでMediaRecorderを初期化する必要があるのはなぜですか?

メインアクティビティを離れてもレコーディングすることになっていますか?または、他のアクティビティが生成される前に記録が停止しますか?

于 2010-07-12T08:13:39.927 に答える