2012-11-02 62 views
2

我正在嘗試播放視頻並希望在相機預覽中進行顯示。該視頻播放透明背景,並且還顯示視頻控制,但沒有視頻可見。我確實收到了正在播放的視頻的聲音。通過相機預覽進行視頻查看

這裏是我的代碼:

// CameraSampleActivity.java, OnCreate Method 

View layout_Initialization= (View)findViewById(R.id.layout_Initialization); 
layout_Initialization.setVisibility(View.VISIBLE); 

View custom_Video_Dialog=(View)findViewById(R.id.videoLayout); 
custom_Video_Dialog.setVisibility(View.GONE); 

//Code related to camera and camera preview here in the OnCreate method 


// CameraSampleActivity.java This code is executed when video needs to be played 

View custom_Video_Dialog=(View)findViewById(R.id.videoLayout); 
custom_Video_Dialog.setVisibility(View.VISIBLE); 

VideoView mVideoView = (VideoView) findViewById(R.id.myvideoview); 
mVideoView.setMediaController(new MediaController(CameraSampleActivity.this)); 
mVideoView.setVideoURI(Uri.parse(firstVideo.getUrl())); 

mVideoView.setOnPreparedListener(new OnPreparedListener() { 

        public void onPrepared(MediaPlayer arg0) { 
         mVideoView.setFocusable(true); 
         mVideoView.requestFocus(); 
         mVideoView.start(); 
        } 
       }); 

//下面是main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@drawable/transparent" 
    android:orientation="vertical" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"> 
    <FrameLayout android:layout_width="fill_parent" 
     android:layout_height="0px" android:layout_weight="1"> 
     <FrameLayout android:id="@+id/cameraPreview" 
      android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

     <RelativeLayout android:id="@+id/layout_Initialization" 
      android:layout_width="fill_parent" android:layout_height="fill_parent" 
      android:background="@drawable/transparent" android:orientation="horizontal"> 
................................. 
................................. 
....................... .........   
     </RelativeLayout> 
     <RelativeLayout 
       android:id="@+id/videoLayout" 
       android:layout_width="fill_parent" 
       android:layout_height="280dp" > 

      <VideoView android:id="@+id/myvideoview" 
       android:layout_width="fill_parent" android:layout_height="180dp" 
       android:layout_alignParentTop="true" /> 
      <Button android:id="@+id/videoListButton" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" android:text="List" /> 
     </RelativeLayout> 

    </FrameLayout> 



</LinearLayout> 

我覺得上下文傳遞到的MediaController不正確。請注意,如果我在frameLayout之外拍攝videoLayout,則視頻可見但不透明。將其放置在Framelayout內部可以提供透明度,並且可以在背面顯示相機預覽,這正是我想要的。任何幫助?

+0

嗨,你能找到任何解決方案嗎? –

回答

0

我設法做的相當類似的東西,覆蓋在攝像頭視頻預覽一個TextView,這可以幫助你:

不同於線性佈局,聲明的順序沒有定義在相對佈局的Z順序。 我能夠通過在XML視圖中聲明兩個視圖 覆蓋相機預覽上的textview,並以編程方式將它們覆蓋在我的Activity的onCreate方法上。

假設你有要覆蓋在相機預覽框架佈局,因爲爲什麼不呢?它看起來很酷!:

<RelativeLayout> 
     <TextView 
     android:id="@+id/txtnombotiga" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Ola ke ase" 
     android:textColor="#000000" 
     android:textSize="16sp"  
     android:background="#55ffffff" 
     /> 
    <FrameLayout 
     android:id="@+id/cameraPreview" 
     android:layout_width="match_parent" 
     android:layout_height="240dp">  
    </FrameLayout> 
</RelativeLayout> 

如果不一樣,用一個漂亮的透明化背景一個TextView的XML ,相機會覆蓋你的文字,不管是什麼:( )爲了解決它,讓我們去編程,並且: 1)將TextView從其父級佈局分離 2)將其附加到相機的框架佈局之後先安裝攝像頭。

繼承人的代碼

的OnCreate(){ ... blaa blaaa ...

//Create camera instance and reference to our frame Layout 
mPreview = new CameraPreview(this, mCamera, previewCb, autoFocusCB);   
FrameLayout preview = (FrameLayout) findViewById(R.id.cameraPreview); 
//Add camera to the Frame Layout 
preview.addView(mPreview); 
//Get reference to the TextView you want to overlay and type something funny 
TextView txt=(TextView)findViewById(R.id.txtnombotiga);  
txt.setText("ola keee aseee!"); 
//1) Step 1, here comes the magic! dettach the textView from its original Layout 
((ViewGroup)txt.getParent()).removeView(txt); 
//1) Step 2, voila! attach it to the View, order matters here so it will appear on 
//top of the camera! 
preview.addView(txt); 

這是做到這一點的一般方式,如果你需要更多的細節讓我知道。 我需要在工作時間內完成最後期限,所以我使用第一個解決方案出現在我的腦海中,有時候不是最優雅或高效的,如果您知道更好的方式,請與我們分享!