2012-06-28 44 views
2

我正在開發一個應用程序,它應該記錄一個視頻。由於項目的限制,像Preview和VideoRec類,我無法更改某些類。如何獲得Android屏幕的當前視圖

應用程序有一個主屏幕活動,並有一個切換按鈕。每當選中切換按鈕時,視頻錄製應該開始,反之亦然。

但是,VideoRec類的構造函數爲輸入(VideoRec(View x))提供了一個View類型參數。主要活動的屏幕有一個表面視圖和幾個按鈕。我想要做的就是在同一屏幕上啓動視頻錄製,就像任何手機的默認媒體錄製器應用程序一樣。

我的問題是;我一直未能獲得屏幕的視圖。我無法使用預覽或surfaceView類型,我得到的錯誤是classCast Exceptions或無效的預覽/表面預覽。

長話短說,我如何才能將活動的屏幕視爲一種視圖?

回答

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; 
    } 
0

我的理解是你有1個surfaceview這裏重現您正在錄製的內容。 因此,您必須在SurfaceChanged(...)SurfaceHolder.Callback中附加您的PreviewCallback!完成此操作後,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)); 
      } 
     }); 

} 

希望它可以幫助乾杯

相關問題