簡體   English   中英

在Android 4.3上以縱向模式全屏攝像頭預覽

[英]Full screen camera preview in portrait mode on Android 4.3

我正在使用Intel Inde庫作為媒體(特別是此示例: https : //github.com/INDExOS/media-for-mobile/blob/master/Android/samples/apps/src/com/intel/inde/mp/ samples / CameraCapturerActivity.java

我的目標是在縱向模式下設置全屏預覽,並在縱向模式下錄制視頻。 一切在橫向模式下都可以正常工作(全屏預覽和錄制)。 但是在縱向模式下,我無法拉伸預覽以垂直填充屏幕(即使我將表面視圖設置為最大尺寸)。 我得到的最大尺寸是方形圖像預覽。 我嘗試過使表面視圖的尺寸大於屏幕,但仍停留在正方形預覽和錄制的狀態。

這是我的預覽屏幕當前的外觀: http : //imgur.com/XUznvF1

這是我的代碼:

public void createCamera() 
{
    Camera camera = Camera.open();
    Camera.Parameters parameters = camera.getParameters();

    List<Camera.Size> supportedResolutions = camera.getParameters().getSupportedPreviewSizes();
    parameters.setPreviewSize(supportedResolutions.get(0).width,   
    supportedResolutions.get(0).height);
    camera.setDisplayOrientation(90);  
    camera.setParameters(parameters);
}

public void createPreview() 
{
     GLSurfaceView surfaceView = new GLSurfaceView(getActivity().getApplicationContext());

     //This code is used to get display size to set surface view size
     Display display = getActivity().getWindowManager().getDefaultDisplay();
     Point size = new Point();
     display.getSize(size);
     int width = size.x;
     int height = size.y;

     surfaceView.setLayoutParams(new FrameLayout.LayoutParams(width, height));

     //Used to test that the surfaceview does cover the whole screen
     //surfaceView.setBackgroundColor(Color.RED);

     ((RelativeLayout)view.findViewById(R.id.myview)).addView(surfaceView, 0);

     preview = capture.createPreview(surfaceView, camera);
     preview.start();           
 }

英特爾開發人員站點上有一個線程,似乎是同樣的問題。 他們有解決方案,但是您必須通過電子郵件請求庫更新:

https://software.intel.com/en-us/forums/topic/542633

我認為您的問題是您將相機的預覽尺寸設置為支持的尺寸列表中的第一個尺寸。

List<Camera.Size> supportedResolutions = camera.getParameters().getSupportedPreviewSizes();
parameters.setPreviewSize(supportedResolutions.get(0).width, supportedResolutions.get(0).height);

您應該做的是循環瀏覽受支持的尺寸列表,找到與屏幕尺寸/分辨率非常匹配的尺寸。

您可以檢查此SO答案以獲取示例代碼段

更新

下一步將是調試它,並找出為什么它對您不起作用。 在您的情況下,我將要打印出supportedResolutions列表的內容。 由於您已經具有顯示尺寸,因此我將顯示尺寸與supportedResolutions列表中的不同尺寸以及從getOptimalSize方法返回的尺寸進行比較。 getOptimalSize方法可能找不到最佳大小,並且可能需要根據您的需要進行調整。 我調整了我的設備使其正常工作。

讓我知道您是否需要更多幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM