1
내가 네 소요 내 응용 프로그램에 카메라를 구현 한

FrameLayout이 4 : 3 화면이 비율

소개 : 3 비율의 이미지를, 여기에 내 카메라 클래스 I에서 XML

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/imageCapture"> 
</FrameLayout> 

내 카메라입니다 이 객체에 대한 내 표면 뷰를 호출하십시오.

public FrameLayout preview; 
//,,, 
preview = (FrameLayout) rootView.findViewById(R.id.imageCapture); 
//... 
myCameraSurfaceView = new Surface(getActivity(), myCamera); 
preview.addView(myCameraSurfaceView); 

모두 매우 훌륭하게 작동하지만,! 아래와 같이 3 사진 :

문제는

내 카메라는 4 걸립니다 내가 원하는 3 사진 :

p.setPictureSize(bWidthFourThree, bHeightFourThree); 
myCamera.setParameters(param); 

그래서 내 캡처 된 이미지는 4입니다. BUT 내 카메라 미리보기 (framelayout/surfaceview 구현)가 전체 화면을 래핑합니다. 폭과 높이 모두 프레임 레이아웃에 대한 일치하는 부모 때문에 나는

가 지금은 문제가 무엇인지 알고 싶습니다 무엇

, 그것은 화면을 래핑합니다. 내가 원하는 것은 :

  • bWidthFourThree, BHeightFourThree에 따라 프레임 레이아웃 매개 변수를 설정하십시오. 그러나 장치간에 이러한 변수는 다른 카메라 하드웨어 등으로 인해 변경 될 수 있으므로 너비와 높이를 하드 코드 할 수 없습니다. 또한 카메라의 SurfaceView는 Camera 클래스의 내부 클래스이므로 framelayout을 만들기 전에 카메라 해상도 변수를 얻는 방법을 알지 못합니다.

추가 정보가 필요하면 도움이됩니다. 알려주십시오.이 게시글을 업데이트하십시오.

+0

xml에 FrameLayout이 없어도 새 인스턴스를 인스턴스화하고 (FrameLayout.LayoutParams를 통해) 레이아웃 매개 변수를 설정할 수 있으므로 인스턴스 그것은 당신이 카메라 치수를 가지고 후에. 그런 다음 FrameLayout을 다른 뷰 (LinearLayout, 즉)에 추가 할 수 있습니다. – FabioR

+0

예를 들어 주시겠습니까, 그 뜻을 이해하는 것만으로도 구현할 수 있습니다. – PepsiVsCoke

+0

대답으로 게시하겠습니다. – FabioR

답변

0

카메라의 변수 값을 가지기 전에 FrameLayout을 만들 필요가 없습니다. FrameLayout이 LinearLayout 내부에 있다고 가정 해 보겠습니다. 당신은 예를 것하고 너무 매개 변수의 설정 :

//I used getContext(), but you can change it to yours 
FrameLayout frameLayout = new FrameLayout(getContext()); 
//The layout parameters must ALWAYS be related to the parent. So, if it's a LinearLayout, you'll use LinearLayout.LayoutParams 
//Create the parameters using the dimensions you want 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(bWidthFourThree, bHeightFourThree); 
//Add your FrameLayout to the LinearLayout passing the parameters 
yourLinearLayout.addView(frameLayout, layoutParams); 

그런 식으로, 당신은 FrameLayout이를 인스턴스화거야, 그리고 당신이 그들을 한 후이 카메라의 크기를 전달합니다. 그런 다음, (이전처럼) 뷰를 추가하여 FrameLayout에 이미지를 전달할 수 있습니다.

도움이되는지 알려 주시고, 그렇다면 upvote/정답으로 선택하십시오. 더 많은 질문이 있으시면이 답변에 답변하십시오.

+0

이것이 가능하지 않다고 생각합니다. 감각. readme.txt를 먼저 살펴보십시오. https://drive.google.com/open?id=0B4vL9wnJulKodmg4S0hyQ1NSSXc 오랫동안이 문제에 갇혀있는 데 도움이 될 수 있다면 정말 고맙겠습니다. – PepsiVsCoke

+0

해결 방법에 대한 아이디어가 있습니까? – PepsiVsCoke

+0

나중에 보시고 알려 드리겠습니다. 그러나 내가 본 것을 보았을 때, 왜 그렇지 않다고 말씀 하시겠습니까? – FabioR