2

ビデオを録画する Android アプリケーションを開発しています。Preview や VideoRec クラスなど、プロジェクトの制限により変更できないクラスがあります。

アプリケーションには 1 つのメイン画面アクティビティがあり、トグル ボタンがあります。トグル ボタンがチェックされている場合はいつでもビデオ録画が開始され、チェックされていない状態ではその逆になります。

ただし、VideoRec クラスのコンストラクターは、入力 (VideoRec(View x)) の View 型パラメーターを受け取ります。メイン アクティビティの画面には、サーフェス ビューといくつかのボタンがあります。私がやろうとしているのは、電話のデフォルトのメディアレコーダー アプリケーションと同じように、同じ画面でビデオ録画を開始することです。

私の質問は; 画面のビューの取得に失敗し続けます。プレビューまたは surfaceView タイプを使用できません。classCast 例外または無効なプレビュー/サーフェス プレビューのいずれかを示すエラーが表示されます。

簡単に言えば、アクティビティの画面をビューのタイプとして取得するにはどうすればよいですか?

4

2 に答える 2

0

必要なビューを返すメイン アクティビティでパブリック メソッドを提供できます。明らかに、そのビューの参照を onCreate メソッド アクティビティに保存する必要があります。

 View myView;

 protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.the_layout_id);
      myView = (View)findViewByID(R.id.your_id_view);            
 }


  public View getTheView(){
      return myView;
  }
于 2012-06-28T15:30:29.190 に答える
0

私が理解しているのは、記録しているものを再現するサーフェスビューが 1 つあるということです。したがって、PreviewCallback を surfaceChanged(...) SurfaceHolder.Callback にアタッチする必要があります。これを行うと、MediaRecorder の実行後に引き続きプレビュー フレーム データを取得できます。

例えば:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    mCamera.setPreviewCallback(new PreviewCallback() {
            public void onPreviewFrame(byte[] _data, Camera _camera) {
                Log.d("onPreviewFrame-surfaceChanged",String.format("Got %d bytes of camera data", _data.length));
            }
        });

}

それが役立つことを願っています!乾杯

于 2014-11-26T13:06:29.640 に答える